Dokumentation Identitäts-Protokolle für MOA-ID - E

Transcription

Dokumentation Identitäts-Protokolle für MOA-ID - E
Dokumentation
Identitäts-Protokolle für
MOA-ID
Version 1.0, 26.09.2013
Bernd Zwattendorfer – [email protected]
Zusammenfassung: Identitätsprotokolle dienen im Allgemeinen dem sicheren
Austausch von Identitäts- und Authentifizierungsdaten von Bürgerinnen bzw.
Bürgern zwischen Identity Provider und Service Provider, konkret zwischen MOAID und Online Applikation. Derzeit ist SAML 1.0 das verwendete Protokoll, in
Zukunft soll auf SAML 2.0 bzw. PVP 2.x gesetzt werden. Nachdem aber neben
SAML eine Reihe anderer Identitätsprotokolle existiert, wurde im Rahmen dieses
Projekts nebem SAML eine Analyse weiterer Identitätsprotokolle durchgeführt
(OAUth, OpenID Connect, OpenID, CAS, WS-Federation). Diese Protokolle
wurden anhand unterschiedlicher Kriterien miteinander verglichen und auf
deren Eignung für eine Verwendung in MOA-ID überprüft.
E-Government
Innovationszentrum
Inffeldgasse 16/a, A-8010 Graz
Tel.
+43 316 873 5514
Fax.
+43 316 873 5520
E-Mail [email protected]
www.egiz.gv.at
Das E-Government Innovationszentrum ist eine gemeinsame
Einrichtung des Bundeskanzleramtes und der TU-Graz
Inhaltsverzeichnis
1 Einleitung .......................................................................................................................................6
1.1 Identitätsprotokoll für MOA-ID ............................................................................................6
1.2 Terminologie...........................................................................................................................8
1.3 Vergleichskriterien .................................................................................................................9
1.3.1 Funktionale Kriterien ..................................................................................................9
1.3.2 Organisatorische Kriterien ......................................................................................10
1.3.3 Technische Kriterien ................................................................................................11
2 SAML 1.0 ......................................................................................................................................12
2.1 Allgemeines..........................................................................................................................12
2.2 Authentifizierungsablauf ....................................................................................................12
2.3 Beispiel ..................................................................................................................................14
2.3.1 Authentifizierungsrequest (Schritt 2) .....................................................................14
2.3.2 Authentifizierungsrequest (Schritt 8) .....................................................................14
2.3.3 Authentifizierungsresponse (Schritt 9) ..................................................................15
2.4 Diskussion ..............................................................................................................................16
2.4.1 Funktionale Kriterien ................................................................................................16
2.4.2 Organisatorische Kriterien ......................................................................................16
2.4.3 Technische Kriterien ................................................................................................17
2.5 Fazit ........................................................................................................................................18
3 SAML 2.0 (PVP 2.x) ......................................................................................................................19
3.1 Allgemeines..........................................................................................................................19
3.2 Authentifizierungsablauf ....................................................................................................20
3.3 Beispiel ..................................................................................................................................22
3.3.1 Authentifizierungsrequest (Schritt 2) .....................................................................22
3.3.2 Authentifizierungsresponse (Schritt 7) ..................................................................23
3.4 Diskussion ..............................................................................................................................25
3.4.1 Funktionale Kriterien ................................................................................................25
3.4.2 Organisatorische Kriterien ......................................................................................26
3.4.3 Technische Kriterien ................................................................................................26
3.5 Fazit ........................................................................................................................................27
Einleitung
2
4 OAuth 2.0 ....................................................................................................................................29
4.1 Allgemeines..........................................................................................................................29
4.2 Authentifizierungsablauf ....................................................................................................29
4.3 Beispiel ..................................................................................................................................31
4.3.1 Authorization Request (Schritt 2)...........................................................................31
4.3.2 Authorization Response (Schritt 7) ........................................................................32
4.3.3 Access Token Request (Schritt 8) ..........................................................................32
4.3.4 Access Token Response (Schritt 9) .......................................................................32
4.3.5 UserInfo Request (Schritt 10) ..................................................................................32
4.3.6 UserInfo Response (Schritt 11) ...............................................................................32
4.4 Diskussion ..............................................................................................................................33
4.4.1 Funktionale Kriterien ................................................................................................33
4.4.2 Organisatorische Kriterien ......................................................................................34
4.4.3 Technische Kriterien ................................................................................................34
4.5 Fazit ........................................................................................................................................35
5 OpenID Connect .......................................................................................................................37
5.1 Allgemeines..........................................................................................................................37
5.2 Authentifizierungsablauf ....................................................................................................37
5.3 Beispiel ..................................................................................................................................39
5.3.1 Authorization Request (Schritt 2)...........................................................................39
5.3.2 Authorization Response (Schritt 7) ........................................................................40
5.3.3 Access Token Request (Schritt 8) ..........................................................................40
5.3.4 Access Token Response (Schritt 9) .......................................................................40
5.3.5 UserInfo Request (Schritt 10) ..................................................................................41
5.3.6 UserInfo Response (Schritt 11) ...............................................................................41
5.4 Diskussion ..............................................................................................................................41
5.4.1 Funktionale Kriterien ................................................................................................41
5.4.2 Organisatorische Kriterien ......................................................................................42
5.4.3 Technische Kriterien ................................................................................................43
5.5 Fazit ........................................................................................................................................43
6 OpenID ........................................................................................................................................45
Einleitung
3
6.1 Authentifizierungsablauf ....................................................................................................45
6.2 Beispiel ..................................................................................................................................47
6.2.1 OpenID Authentication Request (Schritt 6) ........................................................47
6.2.2 OpenID Authentication Response (Schritt 7)......................................................48
6.3 Diskussion ..............................................................................................................................49
6.3.1 Funktionale Kriterien ................................................................................................49
6.3.2 Organisatorische Kriterien ......................................................................................50
6.3.3 Technische Kriterien ................................................................................................51
6.4 Fazit ........................................................................................................................................52
7 CAS ...............................................................................................................................................53
7.1 Authentifizierungsablauf ....................................................................................................53
7.2 Beispiel ..................................................................................................................................55
7.2.1 CAS Authentication Request (Schritt 2) ...............................................................55
7.2.2 Redirect with ticket (Schritt 6 und 7) ....................................................................55
7.2.3 Authentifizierungsrequest (Schritt 8) .....................................................................56
7.2.4 Authentifizierungsresponse (Schritt 10) ................................................................56
7.3 Diskussion ..............................................................................................................................56
7.3.1 Funktionale Kriterien ................................................................................................56
7.3.2 Organisatorische Kriterien ......................................................................................57
7.3.3 Technische Kriterien ................................................................................................58
7.4 Fazit ........................................................................................................................................58
8 WS-Federation ............................................................................................................................60
8.1 Authentifizierungsablauf ....................................................................................................60
8.2 Beispiel ..................................................................................................................................62
8.2.1 Authentifizierungsrequest (Schritt 2) .....................................................................62
8.2.2 Authentifizierungsresponse (Schritt 7) ..................................................................62
8.3 Diskussion ..............................................................................................................................63
8.3.1 Funktionale Kriterien ................................................................................................63
8.3.2 Organisatorische Kriterien ......................................................................................63
8.3.3 Technische Kriterien ................................................................................................64
8.4 Fazit ........................................................................................................................................65
Einleitung
4
9 Weitere Protkolle ........................................................................................................................66
9.1 STORK ....................................................................................................................................66
9.2 Mozilla Persona ....................................................................................................................66
10 Vergleich ...................................................................................................................................67
10.1 Bewertungsschemata ......................................................................................................67
10.1.1 Bewertungsschema Funktionale Kriterien .........................................................67
10.1.2
Bewertungsschema
Organisatorische
Kriterien ...............................................................................................................................68
10.1.3 Bewertungsschema Technische Kriterien .........................................................68
10.2 Vergleich anhand der Kriterien ......................................................................................69
10.2.1 Vergleich anhand funktionaler Kriterien ...........................................................69
10.2.2
Vergleich
anhand
organisatorischer
Kriterien ...............................................................................................................................70
10.2.3 Vergleich anhand technischer Kriterien ...........................................................71
11 Zusammenfassung ...................................................................................................................73
Abbildungsverzeichnis
Abbildung 1 - Bürgerkarten-Authentifizierung mittels MOA-ID ................................................6
Abbildung 2 - Prozessfluss einer SAML 1-Anmeldung mittels Browser/Artifact Profile .......13
Abbildung 3 - SAML Architektur [SAML2_Overview] ...............................................................19
Abbildung 4 - Prozessfluss einer SAML 2.0-Anmeldung gemäß PVP 2.x ..............................21
Abbildung 5 - Möglicher MOA-ID Authentifizierungsablauf unter Verwendung von
OAuth 2.0........................................................................................................................................30
Abbildung 6 - OpenID Connect Protocol Suite .......................................................................37
Abbildung 7 - Möglicher MOA-ID Authentifizierungsablauf unter Verwendung von
OpenID Connect 1.0 ....................................................................................................................38
Abbildung 8 - Möglicher MOA-ID Authentifizierungsablauf unter Verwendung von
OpenID 2.0 .....................................................................................................................................46
Abbildung 9 - Möglicher MOA-ID Authentifizierungsablauf unter Verwendung von CAS
1.0 ....................................................................................................................................................54
Abbildung 10 - Möglicher MOA-ID Authentifizierungsablauf unter Verwendung von WSFederation ......................................................................................................................................61
Einleitung
5
1 Einleitung
Im Rahmen dieses Projekts werden unterschiedliche Identitätsprotokolle auf ihre
Tauglichkeit und ihre Praktikabilität für einen Einsatz in MOA-ID untersucht und anhand
unterschiedlicher Kriterien miteinander verglichen. In diesem einleitenden Kapitel wird
zuerst
kurz
allgemein
beschrieben,
welche
Funktionalität
ein
gewünschtes
Identitätsprotokoll für MOA-ID generell abbilden soll. Anschließend wird eine
Terminologie-Übersicht
gegeben,
da
in
den
einzelnen
Spezifikationen
der
Identitätsprotokolle unterschiedliche Begriffe für (fast) identische Komponenten
verwendet werden. Abschließend werden die Kriterien gelistet, mit denen die
individuellen Identitätsprotokolle miteinander verglichen werden.
1.1 Identitätsprotokoll für MOA-ID
Abbildung 1 zeigt im Überblick das allgemeine Anmeldeszenario unter Verwendung
der Bürgerkarte und MOA-ID. Die Bürgerin bzw. der Bürger kommuniziert sowohl mit der
Online Applikation als auch mit MOA-ID mittels Web Browser über das HTTP-Protokoll.
Um auf die Funktionalitäten der Bürgerkarten zuzugreifen, verwendet MOA-ID die
Security Layer-Schnittstelle [SL] und dessen Protokoll zur Kommunikation. Hat sich eine
Bürgerin bzw. ein Bürger bei MOA-ID mittels Bürgerkarte eindeutig und sicher
authentifiziert, werden die Anmeldedaten entsprechend über ein Identitätsprotokoll an
die Online Applikation weitergereicht. Die dabei übermittelten Anmeldedaten
enthalten neben persönlichen Daten der Bürgerin bzw. des Bürgers auch (technische)
Informationen zum durchgeführten Authentifizierungsprozess.
Abbildung 1 - Bürgerkarten-Authentifizierung mittels MOA-ID
Einleitung
6
Es existiert bereits eine Reihe von standardisierten Protokollen, die sich mit der sicheren
Übertragung von Identitäts- und Authentifizierungsdaten befassen. MOA-ID setzt derzeit
auf die Security Assertion Markup Language (SAML)1 in Version 1.0 für die Übermittlung
von Identitäts- und Authentifizierungsdaten an die Online Applikation. Im Rahmen
dieses
Projekts
werden
weitere
unterschiedliche
Protokolle
mit
diesem
Verwendungszweck analysiert und miteinander verglichen. Im Wesentlichen sollten die
analysierten Protokolle die folgenden funktionalen Eigenschaften erfüllen:

Transfer von Identitäts- und Authentifizierungsdaten

Sicherheit

Einfache Erweiterbarkeit
Im Rahmen einer ersten Analyse wurde eine Auswahl möglicher Identitätsprotokolle
getroffen, die diese funktionalen Eigenschaften erfüllen und somit für einen Einsatz für
den Datentransfer zwischen MOA-ID und der Online Applikation geeignet wären. Dies
wären im Wesentlichen die folgenden spezifizierten Protokolle:

SAML 1.0

SAML 2.0 bzw. PVP 2.x

OAuth 2.0

OpenID Connect

OpenID 2.0

CAS

WS-Federation
SAML 1.0 wird in die Analyse miteinbezogen, da es derzeit von MOA-ID verwendet wird.
Bei allen anderen Protokollen werden keine älteren Versionen berücksichtigt.
SAML 2.0 bzw. PVP (Portalverbundprotokoll) 2.x, welches auf SAML 2.0 aufsetzt, ist von
besonderer Wichtigkeit, da dieses Protokoll in Zukunft eine wichtige Rolle im
behördlichen Bereich in Österreich spielen wird und das nationale Protokoll für den
Austausch von Identitäts- und Authentifizierungsdaten im E-Government sein wird.
OAuth 2.0 ist eigentlich ein Protokoll zur Autorisierung. Es wird im Rahmen dieses
Dokuments jedoch trotzdem analysiert, da es einerseits bereits von vielen Applikationen
breit eingesetzt wird und weil andererseits das OpenID Connect Protokoll darauf
aufbaut.
Obwohl OAuth 2.0 ursprünglich als Autorisierungsprotokoll entwickelt wurde, kann es
auch für Authentifizierungen eingesetzt werden. OpenID Connect erweitert OAuth 2.0
speziell um Funktionalitäten zur Authentifizierung.
1
http://saml.xml.org
Einleitung
7
OpenID 2.0 stellt im Wesentlichen ein dezentrales Authentifizierungssystem dar. Das
dazugehörige Protokoll verwendet das Konzept der URL-basierten Identität. OpenID 2.0
wird ebenfalls bereits von zahlreichen Applikationen zur Authentifizierung eingesetzt.
CAS ist ein sehr schlichtes, auf HTTP basierendes Protokoll, welches zumeist im
universitären Kontext zur Authentifzierung und für Single Sign-On eingesetzt wird.
WS-Federation ist ein Teil des WS-Trust Frameworks und ebenfalls speziell auf den
Austausch
von
Identitäts-
und
Authentifizierungsdaten
zur
Identitätsföderation
ausgerichtet.
1.2 Terminologie
Obwohl all die zuvor erwähnten Protokolle auf eine sichere Authentifizierung von
Benutzerinnen und Benutzern abzielen und somit den gleichen Anwendungsfall
abdecken, verwenden die meisten Protokolle unterschiedliche Begrifflichkeiten.
Innerhalb dieses Unterabschnitts wird nun versucht, ein gemeinsames Verständnis
dieser
Begrifflichkeiten
zu
erreichen,
um
einen
einfacheren
Vergleich
der
Identitätsprotokolle zu ermöglichen. Im Folgenden werden die in Abbildung 1
dargestellten, bei einer Authentifizierung beteiligten Parteien kurz beschrieben. Tabelle
1listet anschließend die entsprechend äquivalenten Begrifflichkeiten der einzelnen
Identitätsprotokolle.
Online Applikation: Bei der Online Applikation handelt es sich um eine web-basierte EGovernment Applikation oder um eine Applikation des privatwirtschaftlichen Bereichs,
welche durch eine Bürgerkartenauthentifizierung mittels MOA-ID geschützt ist.
Bürgerin bzw. Bürger: Eine natürliche Person, die sich via MOA-ID und Bürgerkarte an
einer Online Applikation authentifizieren möchte. Der Web Browser sowie die
Bürgerkartenumgebung können als Teil der Bürgerin bzw. des Bürgers betrachtet
werden.
MOA-ID: MOA-ID ist eine server-seitige Middleware, welche die Identifizierung und
Authentifizierung der Bürgerin bzw. des Bürgers mittels Bürgerkarte durchführt und der
Applikation die Identitäts- und Authentifizierungsdaten über ein entsprechendes
Identitätsprotokoll strukturiert zur Verfügung stellt.
Einleitung
8
Tabelle 1- Terminologie der unterschiedlichen Identitätsprotokolle
Komponente
SAML
1.0
PVP 2.X
Service
Provider
OpenID
CAS
WS-Federation
OpenID
Connect
SAML
2.0
Online
Applikation
OAuth 2.0
Service
Provider
Client
Relying
Party
Web
Service
Resource
Provider
(Relying Party)
Bürgerin bzw. Subject
Bürger
Principal
Resource
Owner
End User
User
Requestor
(User)
MOA-ID
Identity
Provider
Authorizati OpenID
on Server Provider
UND
Central
Authenti
cation
Server
Security Token
Service
(Identity
Provider)
Identity
Provider
Resource
Server
Im Gegensatz zu den anderen Identitätsprotokollen, zielt OAuth auf Autorisierung und
nicht rein auf Authentifizierung ab. Außerdem wird in OAuth eine Unterscheidung
zwischen der Entität, die die Entscheidung für eine Autorisierung durchführt
(Authorization Server), und jener Entität, welche die Ressource bzw. Identitätsdaten
speichert (Resource Server), getroffen. Im Gegensatz dazu übernimmt beispielsweise in
SAML der Identity Provider beide Funktionalitäten, sodass im Rahmen von OAuth MOAID als gemeinsamer Authorization Server und Resource Server betrachtet werden kann.
1.3 Vergleichskriterien
Die in den weiteren Kapiteln vorgestellten Identitätsprotokolle sollen auf deren Eignung
für einen Einsatz zwischen MOA-ID und Online Applikation hin untersucht werden. Um
diese Protokolle auch entsprechend vergleichen zu können, werden definierte Kriterien
herangezogen. Die einzelnen Kriterien werden nun kurz beschrieben.
1.3.1 Funktionale Kriterien
Dieser Abschnitt beschreibt die Kriterien für den Vergleich funktionaler Eigenschaften.
Transfer von Identitäts- und Authentifizierungsdaten: Das Protokoll soll einen einfachen
und strukturierten Transfer von Identitäts- und Authentifizierungsdaten zwischen MOA-ID
und der Online Applikation ermöglichen.
Sicherheit: Der Transfer von Identitäts- und Authentifizierungsdaten zwischen MOA-ID
und der Online Applikation muss sicher erfolgen und vor Angreifern geschützt sein.
Einleitung
9
Einfache Erweiterbarkeit: Das spezifizierte Protokoll soll die Möglichkeit einer einfachen
Erweiterbarkeit
bieten,
um
somit
auch
österreich-spezifische
Anwendungsfälle
einfacher abdecken bzw. österreich-spezifische Attribute übertragen zu können.
Single Sign-On (SSO): Das Identitätsprotokoll soll einen vereinfachten Anmeldeprozess
mittels Single Sign-On (SSO) unterstützen.
Single Logout (SLO): Das Identitätsprotokoll soll einen vereinfachten Abmeldeprozess
mittels Single Logout (SLO) unterstüzen.
Benutzerinnen bzw. Benutzer-Zustimmung (User Consent): Hiermit wird gecheckt, ob
das Identitätsprotokoll übertragen kann, dass die Bürgerin bzw. der Bürger einem
Datentransfer von MOA-ID zur Online Applikation zugestimmt hat.
1.3.2 Organisatorische Kriterien
Dieser Abschnitt beschreibt die Kriterien für den Vergleich von Eigenschaften auf
organisatorischer Ebene.
Format des Identifikators: Hier wird verglichen, ob das Format des Identifikators vom
Protokoll spezifiziert ist, oder ob auch eigene Formate für Identifikatoren verwendet
werden können.
Format/Name weiterer Attribute: Neben einem Identifikator werden üblicherweise noch
weitere Benuterzinnen- bzw. Benutzer-spezifische Attribute übertragen. Mit diesem
Kriterium wird untersucht, ob Name bzw. Format dieser Attribute durch die Spezifikation
bereits fix festgelegt sind oder ob eigene Werte definiert und in die Spezifikation
integriert werden können.
Verbreitungsgrad: Dieses Kriterium gibt an, seit wann beispielsweise die Spezifikation
zum Identitätsprotokoll bereits existiert bzw. wie häufig das entsprechende Protokoll
bereits in Applikationen implementiert ist (z.B. durch welche Big Player).
Open-Source
Bibliotheken:
Dieses
Kriterium
untersucht,
ob
zum
jeweiligen
Identitätsprotokoll Open-Source Bibliotheken frei zur Verfügung stehen.
Interoperabilität: Dieses Kriterium checkt, ob es aufgrund von unterschiedlichen
Implementierungen des Protokolls leicht zu Interoperabilitätsproblemen kommen kann
bzw. ob Interoperabilitätstests zwischen Produkten/Implementierungen durchgeführt
werden.
Metadaten: Mit diesem Kriterium wird überprüft, ob das Identitätsprotokoll Metadaten
spezifiziert.
Applikations-Registrierung: Dieses Kriterium untersucht, wie Applikationen bei MOA-ID
registriert werden können.
Einleitung
10
1.3.3 Technische Kriterien
Dieser Abschnitt beschreibt die Kriterien für den Vergleich technischer Eigenschaften.
Austausch-Format: Dieses Kriterium untersucht das Format, mit welchem die Identitätsund Authentifizierungsdaten ausgetauscht werden können (z.B. XML oder JSON).
Bindings: Hier wird unterschieden, welche verschiedenen Austauschmöglichkeiten der
Daten zwischen MOA-ID und Online Applikation auf Transportebene möglich sind. Eine
Unterscheidung kann beispielsweise getroffen werden, ob die Daten über die Bürgerin
bzw. den Bürger (Front-Channel) oder direkt von MOA-ID an die Online Applikation
(Back-Channel) übermittelt werden.
Transfer-Protokoll: Hier wird überprüft, welches unter dem Identitätsprotokoll liegende
Transfer-Protokoll (z.B. SOAP oder REST) verwendet wird.
Token-Größe:
Mit
diesem
Kriterium
wird
die
Token-
bzw.
Objekt-Größe
der
ausgetauschten Daten verglichen.
Auswahl des Identitätsdienstleisters (IdP Disvocery): Dabei wird verglichen, wie
entsprechende Identity Provider (z.B. MOA-ID-Zentral) aufgefunden werden können.
Dies kann z.B. über Metadaten, über ein eigenes Service, etc. erfolgen.
Applikations-Authentifizierung: Dieses Kriterium gibt an, wie sich Applikationen bei
MOA-ID
im
Rahmen
eines
Bürgerinnen-
bzw. Bürger-Authentifizierungsprozesses
authentifizieren.
SP-initiiert/IdP-initiiert: Dieses Kriterium gibt an, ob eine Authentifzierung zuerst bei der
Online Applikation oder direkt bei MOA-ID angestoßen wird.
Einleitung
11
2 SAML 1.0
2.1 Allgemeines
Die Security Assertion Markup Language (SAML) ist ein auf XML-basierender Standard
zum sicheren Austausch von Identitäts-, Authentifizierungs-, oder Autorisierungsdaten.
Der Standard SAML 1.0 wurde bereits im Jahr 2002 von OASIS2 (Organization for the
Advancement of Structured Information Standards) veröffentlicht und ist daher
vielmehr nur mehr von historischer Bedeutung. Österreich war jedoch eines der ersten
Länder, welche diesen Standard implementiert und breit eingesetzt haben. Nachdem
zum aktuellen Zeitpunkt dieses Berichts SAML 1.0 immer noch das StandardIdentitätsprotokoll von MOA-ID ist, wird es in die Analyse miteinbezogen. Eine neuere
Version von MOA-ID wird jedoch mit dem aktuellen SAML 2.0 Protokoll ausgestattet
werden. Auf eine detaillierte Beschreibung von SAML selbst wird an dieser Stelle aber
verzichtet und auf die neuere und aktuelle Version 2.0 in Abschnitt 3 verwiesen.
2.2 Authentifizierungsablauf
In diesem Unterabschnitt wird ein typischer Authentifizierungsablauf zwischen Service
Provider (Online Applikation) und Identity Provider (MOA-ID) skizziert. Details in der
Kommunikation zwischen MOA-ID und der Bürgerkartenumgebung werden dabei nicht
dargestellt. Abbildung 2 skizziert dabei einen Authentifizierungsablauf auf Basis des von
SAML 1.0 spezifizierten Browser/Artifact Profils, welches auch in der aktuellen MOA-ID
Implementierung zum Einsatz kommt.
2
https://www.oasis-open.org/
SAML 1.0
12
Abbildung 2 - Prozessfluss einer SAML 1-Anmeldung mittels Browser/Artifact Profile
Der Prozessfluss wird nun etwas genauer beschrieben.
1. Eine Bürgerin bzw. ein Bürger möchte auf eine geschützte Webseite der OnlineApplikation zugreifen. Die Online Applikation bettet dabei eine URL zur
Authentifizierung ein, die direkt auf den Identity Provider MOA-ID zeigt.
2. Mit Klicken auf diese URL wird der Authentifizierungsprozess bei MOA-ID gestartet.
Dabei werden MOA-ID entsprechende Parameter wie z.B. der staatliche
Tätigkeitsbereich bzw. die URL der Online-Applikation, an die die Bürgerin bzw.
der Bürger nach erfolgreicher Authentifizierung umgeleitet werden soll,
übergeben.
3. Die beiden Prozessschritte 3 und 4 sind nur schematisch dargestellt und Details
wurden ausgespart, da sie für das eigentliche Identitätsprotokoll zwischen MOAID und der Online-Applikation von keiner Relevanz sind. Im Wesentlichen wird im
Schritt 3 von MOA-ID bei der Bürgerkartenumgebung die Personenbindung der
Bürgerin bzw. des Bürgers ausgelesen und die Erstellung einer qualifizierten
Signatur angefragt.
4. In diesem Schritt ist vereinfacht dargestellt, dass sowohl die aus der Bürgerkarte
ausgelesene Personenbindung als auch die erstellte qualifizierte Signatur an
MOA-ID übermittelt wurden.
5. Nachdem sowohl Personenbindung als auch die qualifizierte Signatur von MOAID erfolgreich überprüft werden konnten, wird eine SAML Assertion und ein SAML
Artifact von MOA-ID generiert. Die SAML Assertion enthält gemäß MOA-ID
SAML 1.0
13
Spezifikation alle notwendigen Anmeldedaten der Bürgerin bzw. des Bürgers wie
beispielsweise bPK oder Vorname und Nachname sowie allgemein Daten zum
Authentifizierungsprozess. Der SAML Artifact stellt im Wesentlichen eine Referenz
auf diese SAML Assertion dar.
6. In diesem Schritt wird die Bürgerin bzw. der Bürger an die Online Applikation
zurückgeleitet. Die URL dieser Weiterleitung enthält dabei den SAML Artifact. Die
Weiterleitung erfolgt dabei über die Bürgerkartenumgebung
7. Die Bürgerin bzw. der Bürger wird an die Online Applikation weitergeleitet.
8. Die Online Applikation extrahiert den mitgelieferten SAML Artifact und sendet
diesen via Web Service an MOA-ID.
9. MOA-ID extrahiert den Artifact und holt die dazugehörige SAML Assertion aus
dem internen Speicher. Die SAML Assertion wird als Web Service Antwort an die
Online Applikation übertragen.
10. Basierend auf den Daten der SAML Assertion kann die Online Applikation den
Zugriff auf die Applikation gewähren.
2.3 Beispiel
Dieser Unterabschnitt zeigt Beispiele für Request- und Response-Nachrichten im
gezeigten Szenario.
2.3.1 Authentifizierungsrequest (Schritt 2)
Die Authentifizierung beim Identity Provider MOA-ID erfolgt dabei über den Aufruf einer
einfachen URL. Nachdem der Identity Provider direkt aufgerufen wird, handelt es sich
um eine IdP-initierte Authentifizierung. Diese aufgerufene URL sieht beispielsweise
folgendermaßen aus:
https://moa-id.gv.at/moa-idauth/StartAuthentication?Target=BF&OA=http://online-applikation.gv.at
Der Parameter Target gibt dabei den staatlichen Tätigkeitsbereich an und der
Parameter OA die URL der Online Applikation, an die die Bürgerin bzw. der Bürger nach
einer erfolgreichen Authentifizierung zurückgeleitet werden soll.
2.3.2 Authentifizierungsrequest (Schritt 8)
Im Schritt 8 wird der SAML Artifact via Web Service an den Identity Provider zum
Abholen der Assertion übertragen. Dieser SAML-Protokoll-Request – eingebettet in
einen SOAP Web Service Request – sieht z.B. wie folgt aus:
<samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"
IssueInstant="2009-02-24T13:38:32+01:00" MajorVersion="1" MinorVersion="0"
RequestID="6125563722598650316">
<samlp:AssertionArtifact>
AAH5hs8aaZSFYHya0/cmtJ3QAR7rf54uhIsEcDMZFmmZ1/Qldrdf4JSK
</samlp:AssertionArtifact>
</samlp:Request>
SAML 1.0
14
2.3.3 Authentifizierungsresponse (Schritt 9)
In diesem Schritt wird eine SAML-Response-Nachricht, die eine SAML Assertion mit den
Daten der Bürgerin bzw. des Bürgers enthält, von MOA-ID an die Online Applikation
innerhalb einer SOAP Web Service Response übertragen. Eine beispielhafte SAML
Response Nachricht sieht wie folgt aus:
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" InResponseTo="-525973270146282894"
IssueInstant="2009-02-24T13:38:32+01:00" MajorVersion="1" MinorVersion="0"
ResponseID="6125563722598650316">
<samlp:Status>
<samlp:StatusCode Value="samlp:Success"> </samlp:StatusCode>
<samlp:StatusMessage>Anfrage erfolgreich beantwortet</samlp:StatusMessage>
</samlp:Status>
<saml:Assertion xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#"
xmlns:si="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" AssertionID="-1780069874206367983"
IssueInstant="2009-02-24T13:37:30+01:00" Issuer="http://localhost:8080/moa-id-auth/"
MajorVersion="1" MinorVersion="0" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">
<saml:AttributeStatement>
<saml:Subject>
<saml:NameIdentifier NameQualifier="urn:publicid:gv.at:cdid+bpk"
>FyOkEWMooLy8L1zwNicKAhf/vPU=</saml:NameIdentifier>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>http://reference.egovernment.gv.at/namespace/moa/20020822#cm</saml:ConfirmationMethod>
<saml:SubjectConfirmationData/>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Attribute AttributeName="PersonData"
AttributeNamespace="http://reference.e-government.gv.at/namespace/persondata/20020228#">
<saml:AttributeValue>
<pr:Person
xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="pr:PhysicalPersonType">
<pr:Identification>
<pr:Value/>
<pr:Type>urn:publicid:gv.at:baseid</pr:Type>
</pr:Identification>
<pr:Name>
<pr:GivenName>XXXKarin Stella</pr:GivenName>
<pr:FamilyName primary="undefined">XXXKunz</pr:FamilyName>
</pr:Name>
<pr:DateOfBirth>1900-01-01</pr:DateOfBirth>
</pr:Person>
</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute AttributeName="isQualifiedCertificate"
AttributeNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
<saml:AttributeValue>false</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute AttributeName="bkuURL"
AttributeNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
<saml:AttributeValue>http://localhost:3495/http-security-layer-request</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
SAML 1.0
15
</saml:Assertion>
</samlp:Response>
2.4 Diskussion
Dieser Abschnitt beinhaltet eine Diskussion von SAML 1.0 anhand der zuvor
ausgewählten Kriterien.
2.4.1 Funktionale Kriterien
Funktionales Kriterium
Diskussion
Transfer von Identitäts- Identitäts- und Authentifizierungsdaten können in XML und
und
gemäß XML-Schema der SAML-Spezifikation strukturiert werden.
Authentifizierungsdaten Zahlreiche Use Cases können damit abgebildet werden.
Sicherheit
SAML 1.0 bietet zwar die Möglichkeit, einzelne SAMLNachrichten
sowie
SAML-Assertions
zu
signieren,
Verschlüsselungsmöglichkeiten von SAML-Nachrichten waren
aber in dieser Version nicht vorgesehen. Eine Verschlüsselung ist
daher nur auf Transportebene z.B. via SSL/TLS möglich.
Eine detaillierte Analyse der Sicherheit von SAML 1.0 ist unter
[SAML1_SEC] abrufbar.
Einfache
Erweiterbarkeit
Die modulare Architektur sowie die entsprechenden XMLFormate von SAML-Assertions und Protokoll-Nachrichten
wurden entsprechend für einfache Erweiterbarkeit entwickelt.
Single Sign-On (SSO)
SAML 1.0 unterstützt SSO über Domängrenzen.
Single Logout (SLO)
In SAML 1.0 wird kein SLO unterstützt.
Benutzerinnen
bzw. SAML 1.0 unterstützt bzw. definiert keine expliziten Elemente
Benutzer-Zustimmung
oder Attribute für eine Benutzer-Zustimmung bei Anmeldung.
(User Consent)
2.4.2 Organisatorische Kriterien
Organisatorisches
Kriterium
Format
Identifikators
Diskussion
des SAML 1.0 spezifiziert sowohl Formate für einen Identifikator
(mailAddress,
X509SubjectName,
WindowsDomainQualifiedName) als auch lässt es die
Möglichkeit eigener Definitionen offen.
Format/Name weiterer SAML 1.0 gibt keine Attribut-Namen oder –Formate vor.
Attribute
Attribute müssen jedoch einem entsprechenden Namespace
zugeordnet werden.
Verbreitungsgrad
SAML 1.0
Aufgrund der Existenz der neueren SAML Version 2.0 bereits seit
2005 ist der Verbreitungsgrad von SAML 1.0, welche 2002
veröffentlicht wurde, nur mehr gering.
16
Open-Source
Bibliotheken
[SAML_Impl] listet eine Reihe von SAML Implementierungen.
SAML 1.0 wird im Wesentlichen aber nur mehr von OpenSAML3
unterstützt. Weiter verbreitet ist noch der SAML 1.0 Nachfolger
in Version 1.1.
Interoperabilität
Offiziell wurden keine Interoperabilitäts-Tests durchgeführt.
Nach [Internet2] wurden aber unterschiedliche Produkte
vereinzelt auf Interoperabilität getestet.
Metadaten
SAML 1.0 unterstützt keine Metadaten.
ApplikationsRegistrierung
Da SAML 1.0 keine Metadaten spezifiziert, muss die
Applikationsregistrierung außerhalb der Spezifikation erfolgen.
Im Rahmen von MOA-ID erfolgt dies durch eine Eintragung in
der MOA-ID-Konfiguration.
2.4.3 Technische Kriterien
Technisches Kriterium
Diskussion
Austausch-Format
SAML 1.0 basiert auf XML und somit auch die ausgetauschten
Daten.
Bindings
SAML 1.0 unterstützt im Wesentlichen drei Bindings. Ein BackChannel-Binding auf Basis von SOAP und zwei Front-ChannelBindings (HTTP-POST und Artifact-Binding).
Transfer-Protokoll
Neben HTTP wird SOAP als Transfer-Protokoll angeboten.
Token-Größe
Aufgrund der Verwendung von XML sind SAML 1.0-Tokens groß.
Die SAML-Response aus Abschnitt 2.3.3 hat beispielsweise 3,14
KByte.
Auswahl
des SAML 1.0 bietet keine Möglichkeit zum IdP-Discovery.
Identitätsdienstleisters
(IdP Disvocery)
ApplikationsAuthentifizierung
SAML 1.0 unterstützt eigentlich keine SP-initiierte Anmeldung
und die Anmeldedaten werden direkt an den SP
weitergeleitet. Im Rahmen von MOA-ID erfolgt eine
Authentifizierung der Applikation über die Rücksprung-URL, an
die MOA-ID erfolgreich authentifizierte Bürgerinnen bzw. Bürger
weiterleitet. Diese URL ist bei MOA-ID (Identity Provider)
konfiguriert und nur konfigurierte Applikationen sind erlaubt
Anmeldedaten zu erhalten.
SP-initiiert/IdP-initiiert
SAML 1.0 unterstützt nur eine IdP-initiierte Authentifizierung
3
http://www.opensaml.org/
SAML 1.0
17
2.5 Fazit
Die folgende Tabelle 2 listet Stärken und Schwächen von SAML 1.0
Tabelle 2 - Stärken und Schwächen von SAML 1.0
Stärken
Hat sich als Protokoll für MOA-ID bewährt
Schwächen
Nur IdP-initiierte Authentifizierung
Unterstützung bereits bestehender Online Keine Verschlüsselung
Applikationen
Ebene
auf
Nachrichten-
Kein Single Logout
Keine breite Unterstützung mehr, da abgelöst
von SAML 2.0
Eine wesentliche Stärke von SAML 1.0 ist, dass es bereits von vielen Online
Applikationen im E-Government-Umfeld unterstützt wird. Aufgrund der langen Existenz
hat sich das Protokoll im Einsatz entsprechend bewährt.
SAML 1.0 hat sich zwar als Protokoll bewährt, sollte aber in Zukunft nicht mehr im breiten
Kontext eingesetzt werden, da es bereits schon vor einigen Jahren von der
Nachfolgeversion SAML 2.0 abgelöst wurde. SAML 2.0 enhält wesentlich mehr
Funktionalität und neue Implementierungen setzen nur mehr auf SAML 2.0. Fehlende
Funktionalität von SAML 1.0 im Gegensatz zu SAML 2.0 ist beispielsweise das Fehlen
einer möglichen Verschlüsselung oder eines Single Logouts.
SAML 1.0
18
3 SAML 2.0 (PVP 2.x)
3.1 Allgemeines
SAML 2.0 ist die aktuellste Version des SAML Standards und wurde bereits im Jahr 2005
veröffentlicht [SAML_20]. Zu den veröffentlichen Spezifikationen existieren daher auch
einige Errata-Dokumente, deren Änderungen auch in eine aktualisierte SAML 2.1
Version einfließen sollen [SAML_21].
Die Architektur von SAML ist sehr modular gestaltet, sodass einzelne Komponenten
miteinander kombiniert werden können. Abbildung 3 veranschaulicht die modulare
Architektur von SAML.
Abbildung 3 - SAML Architektur [SAML2_Overview]
SAML Assertions sind das Kernelement von SAML und enthalten Identitäts- und
Authentifizierungsdaten einer authentifizierten Bürgerin bzw. eines authentifizierten
Bürgers. Prinzipiell werden drei Arten von Assertions unterschieden: Authentication
Assertion, Attribute Assertion, Authorization Assertion. Die Authentication Assertion
enthält
im
Wesentlichen
durchgeführten
zusätzliche
nur
Authentifizierung
Attribute
eines
Authentifizierungsinformationen
eines
Subjects,
Subjects,
und
Attribute
Authorization
zur
erfolgreich
Assertions
enthalten
Assertions
enthalten
Autorisierungsinformationen zu einem authentifizierten Subject. Am häufigsten werden
Authentication und Attribute Assertions eingesetzt.
SAML Protocols spezifizieren Protokolle zum Nachrichtenaustausch von SAML Assertions.
Mit Hilfe von SAML-Request Nachrichten werden SAML Assertions angefragt, mit Hilfe
von SAML-Response Nachrichten werden SAML Assertions nach einer erfolgreichen
Authentifizierung und Error-Meldungen im Fehlerfall übertragen.
SAML 2.0 (PVP 2.x)
19
Um SAML Protokollnachrichten zu transportieren, werden sogenannte SAML Bindings
definiert. SAML Bindings mappen quasi SAML Protokollnachrichten auf existierende und
standardisierte Nachrichten- und Kommunikationsprotokolle wie beispielsweise SOAP
oder HTTP.
Letztendlich werden in den sogenannten SAML Profiles einzelne Bindings, Protocols, und
Assertions so zusammengefügt, dass entsprechende Identitätsmanagement-Use Cases
abgebildet werden können.
Abgerundet wird die modulare SAML Architektur von der SAML Metadata und SAML
Authentication
Context
Spezifikation.
SAML
Metadata
beschreibt
dabei
Konfigurationsdaten für SAML Service und Identity Provider, SAML Authentication
Context
gibt
spezifizierte
Informationen
zu
Typ
und
Stärke
eines
Authentifizierungsmechanismus an.
SAML 2.0 ist ein sehr mächtiger Standard, der das Abbilden von zahlreichen
Identitätsmanagement-Use Cases erlaubt. Auch aufgrund der hiermit mitgebrachten
Komplexität
kann
es
trotz
Spezifizierung
von
Profilen
immer
wieder
zu
Interoperabilitätsproblemen kommen. Um ein gewisses Maß an Interoperabilität
zwischen unterschiedlichen Implementierungen gewährleisten zu können, hat die
Kantara
Initiative
4
ein
spezielles
Interoperabilitätsprogramm
für
SAML
2.0
Implementierungen ins Leben gerufen, welches interoperable Lösungen auflistet
[Kantara_IOP]. Zusätzlich bietet Kantara auch ein SAML standardkonformes Profil an,
das speziell auf E-Government Anwendungen abzielt [Kantara_eGov]. Dieses Profil
wurde für das Portalverbund-Protokoll (PVP) [PVP2] als Basis herangezogen und
entsprechend den Anforderungen im österreichischen E-Government erweitert bzw.
restriktiert. Nachdem das PVP-Protokoll rein auf SAML 2.0 aufbaut wird auf eine
detaillierte Analyse hier verzichtet und rein SAML 2.0 diskutiert.
3.2 Authentifizierungsablauf
In diesem Unterabschnitt wird ein typischer Authentifizierungsablauf zwischen Service
Provider (Online Applikation) und Identity Provider (MOA-ID) auf Basis von SAML 2.0
skizziert.
Details
in
der
Kommunikation
zwischen
MOA-ID
Bürgerkartenumgebung werden dabei wiederum nicht dargestellt.
und
der
Abbildung 4
skizziert dabei einen Authentifizierungsablauf auf Basis von PVP 2.X (SAML 2.0), welches
auch
in der neuesten MOA-ID Implementierung zum Einsatz kommen wird. Dabei
kommt für eine Authentifizierungs-Anfrage das HTTP-Redirect Binding und für eine
Authentifizierungs-Antwort das HTTP-POST Binding zur Anwendung.
4
http://kantarainitiative.org/
SAML 2.0 (PVP 2.x)
20
Abbildung 4 - Prozessfluss einer SAML 2.0-Anmeldung gemäß PVP 2.x
Der Prozessfluss wird nun etwas genauer beschrieben.
1. Eine Bürgerin bzw. ein Bürger möchte auf eine geschützte Webseite der OnlineApplikation zugreifen.
2. Die Online Applikation übermittelt einen SAML AuthnRequest via Redirect an
den affiliierten Identity Provider (MOA-ID).
3. Die Prozessschritte 3 und 4 sind nur schematisch dargestellt und Details wurden
ausgespart, da sie für das eigentliche Identitätsprotokoll zwischen MOA-ID und
der Online-Applikation von keiner Relevanz sind. Im Wesentlichen wird im Schritt
3 von MOA-ID bei der Bürgerkartenumgebung die Personenbindung der
Bürgerin bzw. des Bürgers ausgelesen und die Erstellung einer qualifizierten
Signatur angefragt.
4. In diesem Schritt ist vereinfacht dargestellt, dass sowohl die aus der Bürgerkarte
ausgelesene Personenbindung als auch die erstellte qualifizierte Signatur an
MOA-ID übermittelt wurden.
5. Nachdem sowohl Personenbindung als auch die qualifizierte Signatur von MOAID erfolgreich überprüft werden konnten, wird eine SAML Assertion von MOA-ID
generiert. Die SAML Assertion enthält gemäß SAML 2.0 Spezifikation und PVP 2.x
Spezifikation alle für die Online Applikation notwendigen Anmeldedaten der
Bürgerin bzw. des Bürgers wie beispielsweise bPK oder Vorname und Nachname
sowie allgemein Daten zum Authentifizierungsprozess. Welche Attribute von
SAML 2.0 (PVP 2.x)
21
MOA-ID an die Applikation übertragen werden, werden in den Metadaten der
Online Applikation (Service Provider) definiert.
6. In diesem Schritt wird die Bürgerin bzw. der Bürger vom Fokus mit der
Bürgerkartenumgebung nochmals auf den Identity Provider umgeleitet, um
wieder dort den Fokus des Browsers zu erhalten.
7. Die SAML Response, welche die erstellte SAML Assertion inkludiert, wird mittels
HTTP-POST an den Service Provider übermittelt
8. Basierend auf den Daten der SAML Assertion kann die Online Applikation den
Zugriff auf die Applikation gewähren.
3.3 Beispiel
Dieser Unterabschnitt zeigt Beispiele für Request- und Response Nachrichten im
gezeigten Szenario.
3.3.1 Authentifizierungsrequest (Schritt 2)
Der SAML AuthnRequest zum Starten einer Authentifizierung wird dabei im dargestellten
Szenario vom Service Provider an den Identity Provider mittels HTTP-Redirect Binding
übermittelt. Dabei wird der SAML Request entsprechend in der URL kodiert. Ein Beispiel
für so eine Übermittlung sieht wie folgt aus:
https://demo.egiz.gv.at/demoportal_moaid2.0/pvp2/redirect?SAMLRequest=nZX...fb9&SigAlg=http%3A%2F%2Fwww.w3.org
%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=I%...%3D
Der Parameter SAMLRequest enthält den XML-Request in Base64-kodierter Form, der
Parameter SigAlg gibt den verwendeten Signaturalgorithmus an, und der Parameter
Signature enthält den Signaturwert.
Ein Beispiel eines dekodierten SAML AuthnRequests ist hier zu finden:
<?xml version="1.0" encoding="UTF-8"?>
<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
AssertionConsumerServiceIndex="1" AttributeConsumingServiceIndex="0"
Destination="https://demo.egiz.gv.at/demoportal_moaid-2.0/pvp2/post"
ID="_e1ecdd2d80062991f8f0f489dfc49441" IssueInstant="2013-08-13T14:13:29.392Z" Version="2.0">
<saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">demologin-pvp2-sso/main/</saml2:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#_e1ecdd2d80062991f8f0f489dfc49441">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>qGqkR6stEnKFS04DQ6yx44CDzzo=</ds:DigestValue>
</ds:Reference>
SAML 2.0 (PVP 2.x)
22
</ds:SignedInfo>
<ds:SignatureValue>GhvpD+urP2BwEaejBW3Y3dmdIKdFDR9AikVn0TAyWBg3d/+gYxBQ0JHPn/XCoHP6QQ
HbNHjfqf8o2wJQrvX9WD/BPJHK2wwecbzPK2cCIco5bGqhGq+LKwHPesHu10nrIfj4T8lAHX4lPiYR5OEDMX
tV1SvHfWIzXEBGh/MyJtk2qAFDT4OfglneNk8hYPjcwNb8MwMME+tlR97snFMzkXI5tHSKB8LzGIPq+K2A0
c06AX2LJiT8xaDscJTqqeaub4zIm6haZ1LZX0qMH2jFJVVjAfYbV2BhdSs6aseTLSp+k2rlPJqvpds8PBN26I8KY
bk/bwQIZ0hSSo//f+q2cw==</ds:SignatureValue>
<ds:KeyInfo>
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>nEPzKMh3TovnfBnTyv+TMYFsGep8Uil7iNbfVyfLoBfqRdeGDOk4es2qWkgB6az+kM/9Js2H06
m4
pjEY7/RIjd0lMWqgi8eqdjilMmbFQykkYYQhlZbvi8KqoBcCKzj5N3GY4qh8A5qN4y85Q3sZj23T
iiIY1rphE+ZTOHCm6CKeRso9jj409YHP1xAXfPvtIYx2TA1uuagxOmL75OC/hr7gcUm0tmuKiSeq
+TO4VZw2Q7K7YESZ1WkiBoG2i4cHdcBFKnVrGNtyxl6UkjWxXRJSU9aNLs5QxsE6iFwCvFoIO+IU
cVWxfFHqOGbRtAcRUb4fk+KFHE2o1DLmfwZaUQ==</ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
</ds:KeyInfo>
</ds:Signature>
<saml2:Subject xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
<saml2:NameID>demologin-pvp2-sso/main/</saml2:NameID>
</saml2:Subject>
<saml2p:NameIDPolicy AllowCreate="true"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"/>
<saml2p:RequestedAuthnContext>
<saml2:AuthnContextClassRef comparison=”minimum”
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">http://www.stork.gov.eu/1.0/citizenQAALevel/4</saml2:
AuthnContextClassRef>
</saml2p:RequestedAuthnContext>
</saml2p:AuthnRequest>
3.3.2 Authentifizierungsresponse (Schritt 7)
Im dargestellten Szenario wird die SAML Assertion – eingepackt in einer SAML Response
– mittels HTTP-POST vom Identity Provider an den Service Provider übertragen. Die SAML
Response wird dabei vom Browser der Bürgerin bzw. des Bürgers automatisch mittels
JavaScript übermittelt.
Eine beispielhafte SAML Response sieht folgendermaßen aus:
<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
Destination="https://demo.egiz.gv.at/demologin-pvp2-sso/securearea.action"
InResponseTo="_e1ecdd2d80062991f8f0f489dfc49441" Version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">MOA-ID 2.0 Demo IDP</saml2:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"
PrefixList="xs"/>
SAML 2.0 (PVP 2.x)
23
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>fCIPTTSFEpAfyygpSiZ6cBEhPEI=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>jmajoi0Ar3FL1o43CG63UJypkzjThiqvsS4bBwg9COqlrjJYjgpfDPhLlexZxoWAbTZ2o1YyF
229R8/mdimiQV0UO+BqbloddbfxloD64djdgr2xDCdnoNjOvFFZaxMxcaXtOfFzgmWTWy5sDVdqfyzT6L5ezJ81
slapBzjgrZvcsBCLIVetU1qDMnM4LC0jmwe+12RBOL342O+Rg40fhBTk88z/mot8KfrvbM9kFrocf5ECB8Ry8iE
AupAlZJw8xiphv8lRPTxevmwpSwdNqDqiW/a3twA8NxzE0YQEi0dgsa5YZXICrUPP9iFUyV7bu86TRqdpsdzoA
98NcMCFTw==</ds:SignatureValue>
<ds:KeyInfo>
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>mWrWy07+hO2VoMeOHpizN3qU2cL2e3EkzAkowmG+OpsR3UpI0dvolRuzaxDPUeANfE913KP
empsT
3cOKGS5IIBmxPgZM1H7EcEPVS2PYimMr1HztBMJMGAdFVFeVFsgdYP4cbwPUs03/E6kVmN7/C+vM
yRPMD7i83YL8/IHChymZ5aJTsRXUpM0TjQQPBQbnnHVWzjcUJ9z9KataS/KpUUM8iSWk73u/gWOs
3vbQLoro80xjLsSdXyJ9dVTCTwCpdP5UJPlsNLg1F7AU+OHwem76rezI0JJZhHUMg6v1xWzh8Xyc
I6CizpD6RmkMXfICbFD8TR5zcNBieH/yNQeAEw==</ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
</ds:KeyInfo>
</ds:Signature>
<saml2p:Status>
<saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</saml2p:Status>
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_44cd6604c7a58fff4f5df402310902ad" IssueInstant="2013-08-13T14:18:15.647Z" Version="2.0">
<saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">MOA-ID 2.0 Demo
IDP</saml2:Issuer>
<saml2:Subject>
<saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
NameQualifier="urn:publicid:gv.at:cdid+BF">BF:fkK+ZDGFNrasdfsWdsnS4fkt5Yc=</saml2:NameID>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml2:SubjectConfirmationData InResponseTo="_e1ecdd2d80062991f8f0f489dfc49441"
NotOnOrAfter="2013-08-13T14:38:15.647Z" Recipient="demologin-pvp2-sso/main/"/>
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions NotBefore="2013-08-13T14:18:15.647Z"
NotOnOrAfter="2013-08-13T14:38:15.647Z">
<saml2:AudienceRestriction>
<saml2:Audience>demologin-pvp2-sso/main/</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement AuthnInstant="2013-08-13T14:18:15.636Z"
SessionIndex="_45945f7d295bf27f8847eb81e88c09c8">
<saml2:AuthnContext>
<saml2:AuthnContextClassRef>http://www.stork.gov.eu/1.0/citizenQAALevel/4</saml2:AuthnContextClassRef>
</saml2:AuthnContext>
</saml2:AuthnStatement>
<saml2:AttributeStatement>
<saml2:Attribute FriendlyName="PVP-VERSION" Name="urn:oid:1.2.40.0.10.2.1.1.261.10"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string">2.1</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="PRINCIPAL-NAME" Name="urn:oid:1.2.40.0.10.2.1.1.261.20"
SAML 2.0 (PVP 2.x)
24
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string">Mustermann</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="BPK" Name="urn:oid:1.2.40.0.10.2.1.1.149"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string">BF:fkK+ZDGFNrasdfsWdsnS4fkt5Yc=</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="EID-SECTOR-FOR-IDENTIFIER"
Name="urn:oid:1.2.40.0.10.2.1.1.261.34"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string">urn:publicid:gv.at:cdid+BF</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>
</saml2p:Response>
3.4 Diskussion
Dieser Abschnitt beinhaltet eine Diskussion von SAML 2.0 anhand der zuvor
ausgewählten Kriterien.
3.4.1 Funktionale Kriterien
Funktionales Kriterium
Diskussion
Transfer von Identitäts- Identitäts- und Authentifizierungsdaten können in XML und
und
gemäß XML-Schema der SAML-Spezifikation strukturiert werden.
Authentifizierungsdaten Zahlreiche Use Cases können damit abgebildet werden.
Sicherheit
SAML 2.0 bietet die Möglichkeit einzelne SAML-Nachrichten,
aber auch SAML Assertions mit XML -Signaturen zu versehen.
Um Vertraulichkeit zu gewährleisten, können ganze Assertions,
aber auch nur einzelne Teile wie Attribute, mittels XMLEncryption verschlüsselt werden. Nebenbei wird der Einsatz von
sicheren Protokollen auf Transportebene, wie z.B. SSL/TLS oder
IPsec empfohlen.
Eine detaillierte Analyse der Sicherheit von SAML 2.0 ist unter
[SAML2_SEC] abrufbar.
Einfache
Erweiterbarkeit
Die modulare SAML-Architektur sowie die entsprechenden
XML-Formate von SAML-Assertions und Protokoll-Nachrichten
wurden entsprechend für einfache Erweiterbarkeit entwickelt.
Single Sign-On (SSO)
SAML 2.0 unterstützt SSO über Domängrenzen.
Single Logout (SLO)
SAML 2.0 unterstützt SLO über Domängrenzen. Es wurden
einzelne Protokolle und Profile dafür spezifiziert.
Benutzerinnen
bzw. SAML 2.0 unterstützt bzw. definiert explizite, aber optionale
Benutzer-Zustimmung
Elemente für eine Benutzer-Zustimmung bei einer Anmeldung.
SAML 2.0 (PVP 2.x)
25
(User Consent)
Der Service Provider erhält dadurch Informationen, ob ein
Principal bzw. wie ein Principal seine Zustimmung zur
Anmeldung gegeben hat.
3.4.2 Organisatorische Kriterien
Organisatorisches
Kriterium
Format
Identifikators
Diskussion
des SAML 2.0 spezifiziert mehrere Formate für den Identifikator, z.B.
ob dieser persistent oder nur temporär ausgestellt wurde.
Nebenbei lässt SAML 2.0 aber auch die Möglichkeit eigener
Definitionen offen.
Format/Name weiterer SAML 2.0 gibt keine Attribut-Namen vor. Formate können aber
Attribute
beispielsweise als String oder URI definiert sein.
Verbreitungsgrad
Nachdem die Version 2.0 bereits seit 2005 spezifiziert ist, gibt es
auch schon zahlreiche Implementierungen [SAML_Impl].
[SAML_Kant_Impl]
listet
weitere
interoperable
Implementierugen. [ZZA12] gibt einen Überblick über die
Verbreitung von SAML innerhalb der Europäischen Union.
Open-Source
Bibliotheken
[SAML_Impl] und [SAML_Kant_Impl] listen zahlreiche SAML 2.0
Implementierungen, darunter gibt es auch einige Open-Source
Implementierungen.
Interoperabilität
Die Kantara Initiative testete in 2010 zahlreiche Produkute auf
deren Interoperabilität. Eine Liste von interoperablen Produkten
kann unter [SAML_Kant_Impl] gefunden werden.
Metadaten
SAML 2.0 unterstützt eigene Metadaten, die auch in einem
entsprechendem Dokument [SAML2_Metadata] spezifiziert
sind.
ApplikationsRegistrierung
Applikationen bzw. Service Provider werden beim Identity
Provider über den Austausch von Metadaten registriert. Der
Identity Provider überprüft dabei die Struktur sowie Signatur der
Service Provider-Metadaten.
3.4.3 Technische Kriterien
Technisches Kriterium
Diskussion
Austausch-Format
SAML 2.0 basiert auf XML und somit auch die ausgetauschten
Daten.
Bindings
SAML 2.0 unterstützt zahlreiche Bindings. Die bekanntesten und
am häufigsten verwendeten Bindings sind das HTTP-Recirect-,
HTTP-Post-, Artifact- und SOAP-Binding. Es existieren also sowohl
Front-Channel als auch Back-Channel Bindings. Details zu
SAML 2.0 (PVP 2.x)
26
diesen und weiteren Bindings können unter [SAML2_Bindings]
gefunden werden.
Transfer-Protokoll
Neben HTTP wird SOAP als Transfer-Protokoll angeboten.
Token-Größe
Aufgrund der Verwendung von XML sind SAML 2.0-Tokens
ebenfalls sehr groß. Die SAML-Response aus Abschnitt 3.3.2 hat
beispielsweise 5,7 KByte.
Auswahl
des SAML 2.0 spezifiert das sogenannte „Identity Provider Discovery
Identitätsdienstleisters
Profile“ [SAML2_Profiles] zum Auffinden bzw. zur Auswahl eines
(IdP Disvocery)
Identity Providers.
ApplikationsAuthentifizierung
Applikationen werden über ihre zuvor konfigurierten
Metadaten beim Identity Provider authentifiziert. Während
eines Authentifizierungsprozesses wird einerseits die Signatur der
Authentifizierungsanfrage überprüft und andererseits das für
die Signatur verwendete Zertifikat mit den Metadaten
abgeglichen.
SP-initiiert/IdP-initiiert
SAML 2.0 unterstützt sowohl eine IdP-initiierte als auch eine SPinitiierte Authentifizierung.
3.5 Fazit
Die folgende Tabelle 3 listet Stärken und Schwächen von SAML 2.0
Tabelle 3 - Stärken und Schwächen von SAML 2.0
Stärken
Schwächen
Weit verbreitet
„Schwergewichtig“, da XML-basierend
Zahlreiche Implementierungen
Profile
müssen
meist
konkretisiert werden.
Modularer Aufbau
Umfangreiche Spezifikation
Unterstützung zahlreicher Use Cases
Schlechte Integration mit mobilen Clients
trotzdem
noch
Metadaten-Spezifikation
IdP-Discovery
Unterstützung Single Logout
SAML 2.0 existiert bereits seit dem Jahr 2005 und es existieren bereits zahlreiche
Implementierungen in unterschiedlichen Programmiersprachen. Viele Identätslösungen
sowohl im behördlichen als auch im privatwirtschaftlichen Bereich setzen SAML 2.0 ein.
Ein Kernaspekt von SAML 2.0 ist, dass sehr viele Anwendungsfälle damit abgedeckt
werden können. SAML 2.0 spezifiziert beispielswese IdP-Discovery oder Single Logout. Es
SAML 2.0 (PVP 2.x)
27
ist aber auch möglich – aufgrund des modularen Aufbaus von SAML 2.0 – SAML 2.0 für
nicht in SAML spezifizierte Anwendungsfälle einzusetzen.
Die Ausführlichkeit der Spezifzikation hat aber auch den Nachteil, dass die
Verwendung manchmal sehr komplex erscheint und durch die offene Gestaltung
bereits spezifizierte Profile trotzdem noch konkretisiert werden müssen. Aufgrund der
Verwendung von XML sind die übertragenenen Datenmengen größer als bei anderen
Identitäsprotokollen. Dadurch eignet sich SAML auch nicht so gut für die Verwendung
in mobilen Clients.
Nichtsdestotrotz ist SAML 2.0 ein sehr ausgereifter und weit verbreiteter Standard, für
den zahlreiche Implementierungen existieren.
Deswegen und aufgrund der
Unterstützung zahlereicher Anwendungsfälle ist SAML 2.0 sehr gut für einen Einsatz in
MOA-ID geeignet.
SAML 2.0 (PVP 2.x)
28
4 OAuth 2.0
4.1 Allgemeines
Die erste Version von OAuth5 (Version 1.0) wurde im Jahre 2007 als finale Draft Version
veröffentlicht, die finale Version dann drei Jahre später als RFC 5849 [OAuth1] im Jahr
2010. Die aktuelle und nachfolgende Version 2.0, die in diesem Kapitel behandelt wird,
wurde als RFC 6749 [OAuth2][OAuth2][OAuth2] im Oktober 2012 veröffentlicht. Version
2.0 ist jedoch nicht zu Version 1.0 abwärtskompatibel.
Die prinzipielle Idee von OAuth ist es, unterschiedlichen Client-Applikationen wie z.B.
Web-, Desktop-, oder mobilen Applikationen Zugriff auf geschützte Endnutzer-Daten zu
gewähren. OAuth zielt dabei viel mehr auf Autorisierung anstatt Authentifizierung ab,
da eine Applikation von einer Benutzerin bzw. einem Benutzer berechtigt werden kann,
auf ihre bzw. seine Daten zugreifen zu dürfen.
Die aktuelle OAuth-Spezifikation besteht im Wesentlichen aus dem Kern-RFC 6749. Wie
bei den meisten anderen Spezifikationen existiert aber auch hier eine Reihe von
anderen Begleit-Dokumenten, die die Funktionalität von OAuth in gewissen Bereichen
erweitert bzw. einschränkt. In den folgenden Unterabschnitten wird genauer auf die
Eigenschaften von OAuth 2.0 eingegangen.
4.2 Authentifizierungsablauf
In diesem Unterabschnitt wird skizziert, wie eine MOA-ID Anmeldung mittels Bürgerkarte
bei einer Online Applikation unter Verwendung von OAuth 2.0 aussehen könnte. Der
Authentifizierungsprozess ist dabei abstrakt gehalten und lehnt sich an den typischen
OAuth Use Case an. Die Verwendung von OAuth für eine Bürgerkartenauthentifzierung
bedarf aber einer genaueren Analyse. Im Besonderen würde sich OpenID Connect
dafür eignen, da es auf Authentifizierung und nicht Autorisierung abzielt, jedoch auf
OAuth aufbaut.
5
http://oauth.net/
OAuth 2.0
29
Abbildung 5 - Möglicher MOA-ID Authentifizierungsablauf unter Verwendung von OAuth 2.0
Der Prozessfluss wird nun etwas genauer beschrieben.
1. Eine Bürgerin bzw. ein Bürger möchte auf eine geschützte Webseite der OnlineApplikation zugreifen.
2. Die Online Applikation (Client) sendet einen Authorization Request, welcher die
ID der Online Applikation sowie eine Rücksprung-URL (Redirection URI) beinhaltet,
an den Authorization Server, in diesem Fall MOA-ID.
3. Die Prozessschritte 3 und 4 sind nur schematisch dargestellt und Details wurden
ausgespart, da sie für das eigentliche Identitätsprotokoll zwischen MOA-ID und
der Online-Applikation von keiner Relevanz sind. Im Wesentlichen wird im Schritt
3 von MOA-ID bei der Bürgerkartenumgebung die Personenbindung der
Bürgerin bzw. des Bürgers ausgelesen und die Erstellung einer qualifizierten
Signatur angefragt.
4. In diesem Schritt ist vereinfacht dargestellt, dass sowohl die aus der Bürgerkarte
ausgelesene Personenbindung als auch die erstellte qualifizierte Signatur an
MOA-ID übermittelt wurden.
5. Nachdem sowohl Personenbindung als auch die qualifizierte Signatur von MOAID erfolgreich überprüft werden konnten, wird ein Authorization Code von MOAID generiert. In diesem Schritt bzw. mit der qualifizierten Signatur stimmt auch die
OAuth 2.0
30
Bürgerin bzw. der Bürger der Weitergabe der Identitätsdaten an die Online
Applikation zu, was die Generierung des Authorization Codes auslöst.
6. In diesem Schritt wird die Bürgerin bzw. der Bürger vom Fokus mit der
Bürgerkartenumgebung nochmals auf MOA-ID umgeleitet, um wieder dort den
Fokus des Browsers zu erhalten.
7. Der Authorization Code wird mittels Redirect an die Online Applikation
übermittelt. Der Endpoint der Online Applikation entspricht dabei der in Schritt 2
an MOA-ID übermittelten Redirection URI.
8. Die Online Applikation frägt bei MOA-ID um ein sogenanntes Access Token an.
Die Anfrage enthält dabei den Authorization Code sowie nochmals dieselbe
Redirection URI, welche in Schritt 2 zur Abfrage des Authorization Codes
verwendet wurde. Das Access Token wird in weiterer Folge für den Zugriff auf die
Identitätsdaten der Bürgerin bzw. des Bürgers benötigt.
9. MOA-ID authentifiziert die Online Applikation, verifiziert den Authorization Code
und überprüft die Redirection URI. Bei Erfolg wird ein Access Token an die Online
Applikation übermittelt.
10. Nachdem
in
diesem
dargestellten
Szenario
MOA-ID
die
Funktion
des
Authorization und des Resource Servers übernimmt, wird das Access Token von
der Online Applikation wieder an MOA-ID übermittelt.
11. Abhängig vom Typ des Access Tokens sowie dessen Anforderungen überprüft
MOA-ID die Gültigkeit des zuvor übermittelten Access Tokens. Ist das Token gültig,
so kann entsprechende Identitätsinformation an die Online Applikation
übermittelt werden.
12. Die Online Applikation überprüft die übermittelten Identitätsdaten und gewährt
oder verweigert den Zugriff auf das Service.
4.3 Beispiel
Dieser Unterabschnitt zeigt Beispiele für ausgewählte Request- und ResponseNachrichten im gezeigten Szenario.
4.3.1 Authorization Request (Schritt 2)
In diesem Schritt übermittelt die Online Applikation einen Authorization Request an
MOA-ID. Ein Request sieht beispielsweise wie folgt aus:
GET /authorize?response type=code&client id=s6BhdRkqt3&state=xyz
&redirect_uri=https%3A%2F%2Fonline%2Eapplikation%2Egv%2Eat%2Fcb HTTP/1.1
Host: moa-id.gv.at
Der HTTP-Parameter response_type gibt dabei an, dass für die Zustimmung zur
Autorisierung von MOA-ID an die Online Applikation ein Authorization Code übermittelt
werden soll. Der Parameter client_id definiert einen von der Online Applikation für
OAuth 2.0
31
MOA-ID eindeutigen Identifikator und redirect_uri gibt die Rücksprung-URL der
Applikation an.
4.3.2 Authorization Response (Schritt 7)
Eine beispielhafte Authorization Response sieht wie folgt aus:
HTTP/1.1 302 Found
Location: https://online-applikation.gv.at/cb?code=SplxlOBeZQQYbYS6WxSbIA
Der Parameter code enthält dabei den Authorization Code.
4.3.3 Access Token Request (Schritt 8)
Ein beispielhafter Access Token Request sieht wie folgt aus:
POST /token HTTP/1.1
Host: moa-id.gv.at
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https%3A%2F%2Fonline%2Eapplikation%2Egv%2Eat%2Fcb
Der Parameter grant_type spezifiziert den Typ der Autorisierung (in diesem Beispiel
mittels Authorization Token), code gibt den Wert des Authorization Tokens direkt an,
und redirect_uri definiert nochmals die Rücksprung-URL.
4.3.4 Access Token Response (Schritt 9)
Eine beispielhafte Access Token Response sieht wie folgt aus:
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"Bearer",
"expires_in":3600,
}
Der Wert access_token enthält dabei das eigentliche Access Token, der Parameter
token_type spezifiziert den Typ des Tokens, wie z.B. in [OAuth2_Bearer] definiert, und
expires_in gibt die Gültigkeit des Tokens an.
4.3.5 UserInfo Request (Schritt 10)
Ein beispielhafter Request, welcher ein Access Token beinhaltet, sieht wie folgt aus:
POST /resource HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
access_token=2YotnFZFEjr1zCsicMWpAA
Der Parameter access_token enthält dabei das eigentliche Access Token.
4.3.6 UserInfo Response (Schritt 11)
Eine beispielhafte Response der Identitätsdaten sieht wie folgt aus:
OAuth 2.0
32
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"bpk":"12345==",
"given_name":"Max",
"family_name":,"Mustermann"
}
Die in der Response beinhalteten Parameter und Werte enthalten dabei die
Identitätsdaten der Bürgerin bzw. des Bürgers.
4.4 Diskussion
Dieser Abschnitt beinhaltet eine Diskussion von OAuth 2.0 anhand der zuvor
ausgewählten Kriterien.
4.4.1 Funktionale Kriterien
Funktionales Kriterium
Diskussion
Transfer von Identitäts- Identitäts- und Authentifizierungsdaten können mittels URLund
Parameter bzw. JSON zwischen den einzelnen beteiligten
Authentifizierungsdaten Parteien ausgetauscht werden.
Sicherheit
Standardmäßig unterstützt OAuth weder Signaturen noch
Verschlüsselung. Für den sicheren Datenaustausch setzt OAuth
komplett auf SSL/TLS und dessen Funktion für ServerAuthentifizierung und Gewährung der Vertraulichkeit. Die
Möglichkeit von Signaturen ist zwar teilweise gegeben, wird
aber nicht näher spezifiziert.
Die Sicherheit von OAuth 2.0 wird generell ausführlich in der
eigenen Spezifikation, aber auch unter [OAuth2_SEC] diskutiert.
Weitere Möglichkeiten, die Sicherheit von OAuth zu erhöhen,
wäre die Verwendung von SAML 2.0 Assertions [OAuth_SAML]
bzw. von JSON Web Tokens (JWT) [JWT], welche Signaturen und
Verschlüsselung anbieten. Beide Spezifikationen sind aber
derzeit noch im Draft-Status.
Einfache
Erweiterbarkeit
OAuth ist im Wesentlichen ein Rahmenwerk und nicht nur ein
spezifisches Protokoll. Somit erlaubt es viel Raum für eigene
Spezifizierungen und Erweiterungen. Die OAuth 2.0 Spezifikation
sagt sogar explizit, dass einzelne Komponenten teilweise oder
komplett undefiniert sind und entsprechende Profile dazu
erwartet werden.
Single Sign-On (SSO)
SSO-Funktionalität wird von OAuth selbst nicht konkret
spezifiziert. Aufgrund der Verwendung desselben Authorization
Servers für mehrere Clients kann aber SSO erreicht werden.
Single Logout (SLO)
SLO wird von OAuth nicht unterstützt.
Benutzerinnen
bzw. OAuth spezifiziert keine Details, wie eine Benutzerin bzw. ein
Benutzer-Zustimmung
Benutzer dem Datenzugriff eines Clients auf Ressourcen
zugestimmt hat. Der Client erhält nur über unterschiedliche
OAuth 2.0
33
(User Consent)
Bestätigungsmöglichkeiten die Information, dass die Benutzerin
bzw. der Benutzer den Datenzugriff autorisiert hat.
4.4.2 Organisatorische Kriterien
Organisatorisches
Kriterium
Format
Identifikators
Diskussion
des OAuth spezifiziert
Identifikator.
kein
Format
für
einen
übertragenen
Format/Name weiterer OAuth spezifiziert keine Attribut-Namen und lässt die Definition
Attribute
offen.
Verbreitungsgrad
Obwohl erst seit 2012 final, ist OAuth 2.0 bereits weit verbreitet,
da viele namhafte Anbieter von Social Network-Content wie
z.B. Google, Facebook, Twitter, etc. auf diesem Protokoll
aufbauen. Eine Liste von Service Providern, die OAuth
unterstützen, kann unter [OAuth_Wiki] gefunden werden.
Open-Source
Bibliotheken
Für OAuth existiert ebenfalls eine Menge an Open SourceImplementierungen.
Eine Liste von Implementierungen in
unterschiedlichen
Programmiersprachen
ist
unter
[OAuth2_Code]abrufbar.
Interoperabilität
OAuth spezifiziert im Wesentlichen ein Rahmenwerk zur
einfachen Autorisierung. In der OAuth 2.0 Spezifikation sind
bewusst Teile nicht ausspezifiziert. Hinsichtlich Interoperabilität
ist das natürlich ein großer Nachteil, da Implementierungen auf
bestimmte Server zugeschnitten werden. Die Autoren der
Spezifikation gehen jedoch schon davon aus, dass zusätzliche
Profilierungen
der
Spezifikation
notwendig
sind,
um
Interoperabilität zu erreichen [OAuth2].
Metadaten
OAuth unterstützt keine expliziten Metadaten. Auffinden von
Endpoints beispielsweise ist zwar notwendig aber out-of-scope
der Spezifikation.
ApplikationsRegistrierung
Wie Applikationen sich beim Authorization Server registrieren,
wird in der OAuth-Spezifikation nicht beschrieben. Es wird aber
angedeutet, dass eine Benutzer-Interaktion mittels HTML-Seite
typisch ist. Prinzipiell ist keine direkte Interaktion zwischen
Applikation und Authorization Server notwendig. Die
Spezifikation schließt auch generell keine nicht-registrierten
Applikationen aus, lässt Details dazu jedoch offen.
4.4.3 Technische Kriterien
Technisches Kriterium
Austausch-Format
OAuth 2.0
Diskussion
OAuth verwendet für den Datenaustausch einfache HTTP34
Nachrichten, welche auch JSON-Objekte beinhalten können.
Bindings
Für die Übertragung von OAuth-Parametern
stehen
unterschiedliche Möglichkeiten des HTTP-Protokolls zur
Verfügung, wie z.B. als Body in einer HTML-Form oder als URI
Query Parameter. Prinzipiell wird sowohl Front- als auch BackChannel-Kommunikation verwendet.
Transfer-Protokoll
Prinzipiell wird nur HTTP unterstützt, andere Transfer-Protokolle
werden jedoch nicht ausgeschlossen, sind aber in OAuth 2.0
selbst nicht spezifiziert.
Token-Größe
Nachdem nur HTTP-Parameter bzw. JSON-Objekte verwendet
werden, ist die Token-Größe gering. Das Token aus dem Beispiel
aus Abschnitt 4.3.6 hat beispielsweise nur 77 Byte.
Auswahl
des OAuth 2.0 lässt ein IdP-Discovery vollkommen unspezifiziert.
Identitätsdienstleisters
(IdP Disvocery)
ApplikationsAuthentifizierung
Der Authorization Server ordnet jeder Applikation einen für ihn
eindeutigen Identifikator zu, der für eine ApplikationsAuthentifizierung genutzt werden kann. Generell wird in der
OAuth
2.0
Spezifikation
die
Art
der
ApplikationsAuthentifizierung offen gelassen, sie muss nur den festgelegten
Sicherheitsanforderungen des Authorization Servers genügen.
SP-initiiert/IdP-initiiert
OAuth 2.0 unterstützt nur eine SP-initiierte Authentifizierung.
4.5 Fazit
Die folgende Tabelle 4 listet Stärken und Schwächen von OAuth 2.0.
Tabelle 4 - Stärken und Schwächen von OAuth 2.0
Stärken
Schwächen
Weit verbreitet
Sehr offene Spezifikation
Zahlreiche Implementierungen
Notwendigkeit von Profilierung
Leichtgewichtig, da HTTP und JSON
Höhere Sicherheit nur mittels erweiterter
Spezifikation
Gute Integration mit mobilen Clients
Hautptsächlich für Autorisierung
Kein Single Logout
OAuth besitzt bereits eine weite Verbreitung und es existieren auch zahlreiche
Implementierungen. Besonders im Cloud- und Web 2.0-Kontext findet OAuth breiten
Anklang. Im Gegensatz zu SAML ist OAuth leichtgewichtiger, da im Gegensatz zu XML
OAuth 2.0
35
nur HTTP-Werte bzw. JSON-Tokens ausgetauscht werden. Dadurch eignet sich OAuth
auch eher für einen Einsatz in mobilen Clients.
Ein wesentlicher Nachteil von OAuth im Zusammenhang mit MOA-ID ist, dass es
eigentlich auf Autorisierung und nicht auf Authentifizierung abzielt. Für einen Einsatz in
MOA-ID müsste die Spezifikation quasi auf den Use Case der Authentifizierung
„umgebogen“ werden. Dies benötigt insofern einen erhöhten Arbeitsaufwand, da die
Spezifikation sehr offen gestaltet ist und entsprechend profiliert und so auf die
Anforderungen von MOA-ID angepasst werden muss. In der Spezifikation von OAuth
werden weiters einige wichtige Punkte, wie z.B. Single Logout vermisst. Außerdem
werden entsprechende Sicherheitsmechanismen nur mittels erweiterter Spezifikationen
und nicht Out-Of-the-Box unterstützt.
Obwohl OAuth eine weite Verbreitung findet, ist es ohne weitere Profilierung für einen
Einsatz in MOA-ID ungeeignet, da es primär auf die Autorisierung von Applikationen
abzielt.
OAuth 2.0
36
5 OpenID Connect
5.1 Allgemeines
OpenID Connect6 ist noch eine junge Spezifikation und aktuell in der Version 1.0 noch
im Draft Status. Obwohl der Name dazu verleiten mag, anzunehmen dass OpenID
Connect nur eine Erweiterung von OpenID ist, so setzt die Spezifikation viel mehr auf
den zuvor beschriebenen OAuth 2.0 Protokoll auf. Im Wesentlichen handelt es sich
dabei aber um eine leichtgewichtige Spezifikation und ein Rahmenwerk für den
Austausch von Identitätsdaten via REST-API. Die Funktionalität von OAuth 2.0 ist
vollständig inkludiert, OpenID 2.0-Funktionalitäten können jedoch mittels Erweiterungen
integriert werden.
OpenID Connect unterstützt unterschiedliche Arten von Clients für den Austausch von
Identitätsdaten, z.B. Browser-basierte, mobile, oder JavaScript-Clients. Prinzipiell wird bei
OpenID Connect wie bei OAuth 2.0 auf SSL/TLS für den sicheren Datenaustausch
gesetzt,
die
Spezifikation
kann
jedoch
erweitert
werden,
um
beispielsweise
Verschlüsselung, IdP-Discovery, oder Logout zu unterstützen.
Die aktuelle Spezifikation 1.0 ist in sechs Dokumente aufgeteilt, die komplette ProtokollSuite und die einzelnen Komponenten sind in Abbildung 6 dargestellt.
Abbildung 6 - OpenID Connect Protocol Suite
5.2 Authentifizierungsablauf
Dieser Unterabschnitt skizziert einen möglichen Authentifizierungsablauf für eine
Bürgerkartenauthentifizierung
6
unter
Verwendung
von
OpenID
Connect.
http://openid.net/connect/
OpenID Connect
37
Der
Authentifizierungsablauf ist jenem von OAuth sehr ähnlich, OpenID Connect spezifiziert
den Prozessablauf jedoch schon etwas genauer. Die Verwendung von OpenID
Connect für eine MOA-ID Authentifizierung bedarf jedoch noch einer etwas
genaueren Analyse und einer weiteren Profilierung, um den Anforderungen einer
Bürgerkartenauthentifizierung gerecht zu werden.
Abbildung 7 - Möglicher MOA-ID Authentifizierungsablauf unter Verwendung von OpenID Connect 1.0
Der Prozessfluss wird nun etwas genauer beschrieben.
1. Eine Bürgerin bzw. ein Bürger möchte auf eine geschützte Webseite der OnlineApplikation zugreifen.
2. Die Online Applikation (Client) sendet einen Authorization Request, welcher die
ID der Online Applikation, den Scope der Authentifizierung, sowie eine
Rücksprung-URL (Redirection URI) beinhaltet, an den Authorization Server, in
diesem Fall MOA-ID. Der Request kann über HTTP-GET oder HTTP-POST erfolgen
und ist mittels SSL/TLS geschützt.
3. Die Prozessschritte 3 und 4 sind nur schematisch dargestellt und Details wurden
ausgespart, da sie für das eigentliche Identitätsprotokoll zwischen MOA-ID und
der Online-Applikation von keiner Relevanz sind. Im Wesentlichen wird im Schritt
3 von MOA-ID bei der Bürgerkartenumgebung die Personenbindung der
OpenID Connect
38
Bürgerin bzw. des Bürgers ausgelesen und die Erstellung einer qualifizierten
Signatur angefragt.
4. In diesem Schritt ist vereinfacht dargestellt, dass sowohl die aus der Bürgerkarte
ausgelesene Personenbindung als auch die erstellte qualifizierte Signatur an
MOA-ID übermittelt wurden.
5. Nachdem sowohl Personenbindung als auch die qualifizierte Signatur von MOAID erfolgreich überprüft werden konnten, wird ein Authorization Code von MOAID generiert. In diesem Schritt bzw. mit der qualifizierten Signatur stimmt auch die
Bürgerin bzw. der Bürger der Weitergabe der Identitätsdaten an die Online
Applikation zu, was die Generierung des Authorization Codes auslöst.
6. In diesem Schritt wird die Bürgerin bzw. der Bürger vom Fokus mit der
Bürgerkartenumgebung nochmals auf MOA-ID umgeleitet, um wieder dort den
Fokus des Browsers zu erhalten.
7. Der Authorization Code wird mittels Redirect an die Online Applikation
übermittelt. Der Endpoint der Online Applikation entspricht dabei der in Schritt 2
an MOA-ID übermittelten Redirection URI.
8. Die Online Applikation frägt bei MOA-ID um ein sogenanntes Access Token an.
Die Anfrage enthält dabei den Authorization Code sowie nochmals dieselbe
Redirection URI, welche in Schritt 2 zur Abfrage des Authorization Codes
verwendet wurde. Das Access Token wird in weiterer Folge für den Zugriff auf die
Identitätsdaten der Bürgerin bzw. des Bürgers benötigt.
9. MOA-ID authentifiziert die Online Applikation, verifiziert den Authorization Code
und überprüft die Redirection URI. Bei Erfolg wird ein Access Token an die Online
Applikation übermittelt.
10. Nachdem
in
diesem
dargestellten
Szenario
MOA-ID
die
Funktion
des
Authorization und des Resource Servers übernimmt, wird das Access Token von
der Online Applikation wieder an MOA-ID übermittelt.
11. Abhängig vom Typ des Access Tokens sowie dessen Anforderungen überprüft
MOA-ID die Gültigkeit des zuvor übermittelten Access Tokens. Ist das Token gültig,
so kann entsprechende Identitätsinformation an die Online Applikation
übermittelt werden.
12. Die Online Applikation überprüft die übermittelten Identitätsdaten und gewährt
oder verweigert den Zugriff auf das Service.
5.3 Beispiel
Dieser Unterabschnitt zeigt Beispiele für ausgewählte Request- und ResponseNachrichten im gezeigten Szenario.
5.3.1 Authorization Request (Schritt 2)
In diesem Schritt übermittelt die Online Applikation einen Authorization Request an
MOA-ID. Ein Request sieht beispielsweise wie folgt aus:
OpenID Connect
39
https://moa-id.gv.at/authorize?
response_type=code
&client_id=s6BhdRkqt3
&redirect_uri=https%3A%2F%online.applikation.gv.at%2Fcb
&scope=openid%20profile
&state=af0ifjsldkj
Der HTTP-Parameter response_type gibt dabei an, dass für die Zustimmung zur
Autorisierung von MOA-ID an die Online Applikation ein Authorization Code übermittelt
werden soll. Der Parameter client_id definiert einen von der Online Applikation für
MOA-ID eindeutigen Identifikator und redirect_uri gibt die Rücksprung-URL der
Applikation an. Der Scope scope gibt beispielsweise an, welche Attribute angefragt
werden sollen. Der Parameter state dient zum State-Management beim Client.
5.3.2 Authorization Response (Schritt 7)
Eine beispielhafte Authorization Response sieht wie folgt aus:
HTTP/1.1 302 Found
Location: https://online.applikation.gv.at/cb?
code=SplxlOBeZQQYbYS6WxSbIA
&state=af0ifjsldkj
Der Parameter code enthält dabei den Authorization Code und der Parameter state
den im Request übermittelten State der Applikation (des Clients).
5.3.3 Access Token Request (Schritt 8)
Ein beispielhafter Access Token Request sieht wie folgt aus:
POST /token HTTP/1.1
Host: moa-id.gv.at
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https%3A%2F%2Fonline%2Eapplikation%2Egv%2Eat%2Fcb
Der Parameter grant_type spezifiziert den Typ der Autorisierung (in diesem Beispiel
mittels Authorization Token), code gibt den Wert des Authorization Tokens direkt an,
und redirect_uri definiert nochmals die Rücksprung-URL.
5.3.4 Access Token Response (Schritt 9)
Eine beispielhafte Access Token Response sieht wie folgt aus:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"SlAV32hkKG",
"token_type":"Bearer",
"expires_in":3600,
OpenID Connect
40
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
"id_token":"eyJ0 ... NiJ9.eyJ1c ... I6IjIifX0.DeWt4Qu ... ZXso"
}
Der Wert access_token enthält dabei das eigentlich Access Token, der Parameter
token_type spezifiziert den Typ des Tokens, wie z.B. in [OAuth2_Bearer] definiert, und
expires_in definiert die Gültigkeit des Tokens. Der Wert refresh_token wurde bis
jetzt noch nicht genauer erwähnt und dient zum Erneuern eines abgelaufenen Access
Tokens. Der Parameter id_token stellt ein JSON Web Token (JWT) dar und ist im Prinzip
ein Security Token, welches Claims über die Authentifizierung beinhaltet (z.B.
Identifikator
der
Benutzerin
bzw.
des
Benutzers,
Zeit
der
Authentifzierung,
Authentifzierungs-Kontext, etc).
5.3.5 UserInfo Request (Schritt 10)
Ein beispielhafter Request, welcher ein Access Token beinhaltet, sieht wie folgt aus:
GET /userinfo HTTP/1.1
Host: moa-id.gv.at
Authorization: Bearer SlAV32hkKG
Der Parameter access_token enthält dabei das Access Token.
5.3.6 UserInfo Response (Schritt 11)
Eine beispielhafte Response der Identitätsdaten sieht wie folgt aus:
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"sub":"12345==",
"given_name":"Max",
"family_name":,"Mustermann"
"birthdate":,"01-01-1990"
"gender":,"M"
}
Die in der Response beinhalteten Parameter und Werte enthalten dabei die
Identitätsdaten der Bürgerin bzw. des Bürgers. OpenID Connect hat teilweise AttributNamen schon vordefiniert, wie z.B. die im Beispiel dargestellten Namen. Der Wert sub
enthält üblicherweise den Identifikator der Benutzerin bzw. des Benutzers und könnte
somit das bPK aufnehmen.
5.4 Diskussion
Dieser Abschnitt beinhaltet eine Diskussion von OpenID Connect 1.0 anhand der zuvor
ausgewählten Kriterien.
5.4.1 Funktionale Kriterien
Funktionales Kriterium
Diskussion
Transfer von Identitäts- Identitäts- und Authentifizierungsdaten können mittels URLund
Parameter bzw. JSON zwischen den einzelnen beteiligten
Authentifizierungsdaten Parteien ausgetauscht werden.
OpenID Connect
41
Sicherheit
Standardmäßig unterstützen OpenID Connect sowie OAuth
weder Signaturen noch Verschlüsselung. Für den sicheren
Datenaustausch setzt OpenID Connect komplett auf SSL/TLS.
Weitere Möglichkeiten, die Sicherheit von OpenID Connect zu
erhöhen, wäre die Verwendung von JSON Web Tokens (JWT)
[JWT], welche Signaturen und Verschlüsselung anbieten. Beide
Spezifikationen sind aber derzeit noch im Draft-Status.
Einfache
Erweiterbarkeit
OpenID Connect ist so wie OAuth ein Rahmenwerk und nicht
nur ein spezifisches Protokoll. Somit erlaubt es ebenfalls viel
Raum für eigene Spezifizierungen und Erweiterungen. Es
existieren bereits einzelne Draft-Spezifikationen für die
Erweiterung von OpenID Connect, wie z.B. für das Signieren
oder Verschlüsseln von Daten, IdP-Discovery, oder Logout.
Single Sign-On (SSO)
SSO-Funktionalität wird von OpenID Connect selbst nicht
konkret spezifiziert. Aufgrund der Verwendung desselben
Authorization Servers für mehrere Clients kann aber SSO über
diese Clients erreicht werden.
Single Logout (SLO)
Für Single Logout existiert eine eigene Draft-Spezifikation
[OIDCon_Session].
Benutzerinnen
bzw. OpenID Connect gibt Möglichkeiten vor, wie Benutzerinnen
Benutzer-Zustimmung
bzw. Benutzer zu einer Daten-Übertragung zustimmen können.
(User Consent)
5.4.2 Organisatorische Kriterien
Organisatorisches
Kriterium
Format
Identifikators
Diskussion
des Nach OpenID Connect muss der Identifikator ein case-sensitive
String mit max. 255 ASCII Zeichen sein. Er muss beim
Authorization Server eindeutig sein.
Format/Name weiterer OpenID Connect definiert für weitere Attribute wie z.B. Name,
Attribute
Geburtsdatum, etc. deren Name und Format.
Verbreitungsgrad
Nachdem die Spezifikation von OpenID Connect derzeit immer
noch im Draft-Status ist, existieren vorerst nur vereinzelt
Implementierungen. Google z.B. bietet schon eine Möglichkeit
zur OpenID Connect Authentifizierung.
Open-Source
Bibliotheken
Einzelne Open Source-Implementierungen stehen bereits zur
Verfügung.
Interoperabilität
Derzeit ist es noch schwer eine Aussage zur Interoperabilität zu
treffen, da sich die Spezifikation noch im Draft-Status befindet
OpenID Connect
42
und Änderungen zu erwarten sind. OSIS7 (Open Source Identity
Systems) testet jedoch bereits die Interoperabilität von
aktuellen Implementierungen.
Metadaten
Metadaten-Dateien werden von OpenID Connect nicht direkt
unterstützt, jedoch werden Metadaten der Applikation in einer
entsprechenden Erweiterung zu OpenID Connect spezifiziert
[OIDCon_Reg].
ApplikationsRegistrierung
Die Erweiterung von OpenID Connect zur dynamischen ClientRegistrierung [OIDCon_Reg] beschreibt, welche Daten für eine
Applikations-Registrierung notwendig sind.
5.4.3 Technische Kriterien
Technisches Kriterium
Diskussion
Austausch-Format
OpenID
Connect
verwendet
wie
OAuth
für
den
Datenaustausch einfache HTTP-Nachrichten, welche auch
JSON-Objekte beinhalten können.
Bindings
Für die Übertragung von OpenID Connect-Nachrichten stehen
unterschiedliche Möglichkeiten des HTTP-Protokolls zur
Verfügung, wie z.B. GET oder POST. Prinzipiell wird sowohl Frontals auch Back-Channel-Kommunikation verwendet.
Transfer-Protokoll
OpenID Connect
Transferprotokoll.
Token-Größe
Nachdem nur HTTP-Parameter bzw. JSON-Objekte wie bei
OAuth verwendet werden, ist die Token-Größe ebenfalls
gering. Das Token aus dem Beispiel aus Abschnitt 5.3.6 hat
beispielsweise 121 Byte.
unterstützt
nur
HTTP
über
SSL/TLS
als
Auswahl
des Eine Erweiterung von OpenID Connect erlaubt die Aufsuche
Identitätsdienstleisters
von Identity Providern. [OIDCon_Disc]
(IdP Disvocery)
ApplikationsAuthentifizierung
Die Applikations-Authentifizierung erfolgt wie bei OAuth, z.B.
mittels Client-Identifier.
SP-initiiert/IdP-initiiert
OpenID
Connect
Authentifizierung.
unterstützt
nur
eine
SP-initiierte
5.5 Fazit
Die folgende Tabelle 5 listet Stärken und Schwächen von OpenID Connect.
7
http://osis.idcommons.net/wiki/Main_Page
OpenID Connect
43
Tabelle 5 - Stärken und Schwächen von OpenID Connect
Stärken
Schwächen
Unterstützung Authentifizierung
Spezifikation noch Draft-Status
Leichtgewichtig, da HTTP und JSON
Wenig Implementierungen
Gute Integration mit mobilen Clients
Keine IdP-initiierte Authentifzierung
Erhöhte Sicherheit durch
Verwendung von JWT
mögliche Fehlende Erfahrungswerte
Im Gegensatz zur reinen Verwendung von OAuth setzt OpenID Connect nur auf OAuth
auf und verwendet das Protokoll zur Authentifzierung und nicht zur Autorisierung. Wie
OAuth selbst ist OpenID Connect leichtgewichtig, da nur HTTP-Werte bzw. JSON-Token
ausgetauscht werden. Es ergibt sich somit eine einfachere Verwendung in mobilen
Clients. Durch die Verwendung von JWT kann auch die Sicherheit entsprechend erhöht
werden.
Wesentlicher Nachteil von OpenID Connect ist der Umstand, dass sich die Spezifikation
immer noch im Draft-Status befindet und somit fehlende Erfahrungswerte gegeben sind.
Aus diesem Grund fehlen auch noch die entsprechenden Implementierungen zu
OpenID Connect.
Zusammenfassend kann aber gesagt werden, dass OpenID Connect ein viel
versprechender Standard für die Zukunft ist, da er auf OAuth aufsetzt und zu SAML eine
leichtgewichtige Alternative bietet.
OpenID Connect
44
6 OpenID
OpenID8 ist aktuell in der Version 2.0 spezifiziert, dessen Spezifikation bereits im Jahr 2007
verabschiedet wurde. Generell ist OpenID ein dezentrales Authentifizierungssystem, um
die Authentifizierung über Web-basierte Dienste zu vereinfachen.
Das Grundprinzip von OpenID basiert auf einer URL-basierten Identität, welche von
einem OpenID Provider, welcher einem Identity Provider entspricht, zur Verfügung
gestellt wird. Bei Bekanntgabe dieser Identität bzw. dieses Identifikators bei einer
Applikation wird die Benutzerin bzw. der Benutzer zum jeweiligen OpenID Provider zur
Authentifizierung weitergeleitet. Der Ort bzw. Endpunkt des OpenID Providers kann
dabei aus dem bekanntgegebenen Identifikator extrahiert werden. Anschließend
authentifiziert
(üblicherweise
sich
mit
die
Benutzerin
bzw.
Benutzername
und
der
Benutzer
Passwort)
beim
und
die
OpenID
Provider
Identitäts-
und
Authentifizierungsdaten werden an die Online Applikation (Relying Party) übertragen.
Möchte die Benutzerin bzw. der Bürger sich bei einer anderen Online Applikation über
denselben OpenID Provider anmelden, so ist nur die Bekanntgabe des Identifikators
nötig, und eine Anmeldung erfolgt ohne erneute Authentifizierung, was einem Single
Sign-On entspricht.
Wesentliches Merkmal des OpenID-Konzept ist, dass aufgrund der Dezentralisierung
und der Open Source-Lizenzen jede Nutzerin bzw. jeder Nutzer seinen eigenen OpenID
Provider aufsetzen und für eine Authentifizierung nutzen kann. Die Spezifikation ist auch
dahingehend so gestaltet, dass zusätzliche Services leicht auf diese Spezifikation
aufgesetzt werden können. Nachdem die OpenID-Spezifikation schon vor einiger Zeit
verabschiedet wurde, wird OpenID auch bereits recht breit eingesetzt. So gab es nach
dem Bericht von Kissel [OpenID_Rev] aus dem Jahre 2009 damals bereits 9 Millionen
Websites, die OpenID nutzen, und 1 Milliarde aktivierte Accounts.
6.1 Authentifizierungsablauf
Dieser Unterabschnitt skizziert einen möglichen Authentifizierungsablauf für eine
Bürgerkartenauthentifizierung unter Verwendung von OpenID 2.0. Die explizite
Verwendung von OpenID zur Bürgerkartenauthentifizierung bedarf aber noch einer
genaueren Analyse des Protokolls bzw. eine etwaige Profilierung.
8
http://openid.net/
OpenID
45
Abbildung 8 - Möglicher MOA-ID Authentifizierungsablauf unter Verwendung von OpenID 2.0
Der Prozessfluss wird nun etwas genauer beschrieben.
1. Eine Bürgerin bzw. ein Bürger möchte auf eine geschützte Webseite der OnlineApplikation zugreifen.
2. Um sich bei der Online Applikation anmelden zu können, muss die Bürgerin bzw.
der Bürger ihren bzw. seinen OpenID Identifikator z.B. in eine Login-Maske
eingeben. Die Bürgerin bzw. der Bürger kann dabei aussuchen, welchen
Identifikator sie bzw. er verwenden will und somit, bei welchem OpenID Provider
sie bzw. er sich authentifizieren möchte.
3. Die
Online
Applikation
(Relying
Party)
verwendet
den
eingegebenen
Identifikator zum Auffinden des OpenID Providers der Bürgerin bzw. des Bürgers.
4. Die Online Applikation stellt einen direkten Request zum OpenID Provider zum
Aushandeln einer sogenannten Association, was der Generierung eines
gemeinsamen Secrets dient. Dieses Secret wird in weiterer Folge zum Signieren
und Verifizieren von OpenID Authentication Messages verwendet.
OpenID
46
5. Der OpenID Provider antwortet mit entsprechenden Secret-Informationen.
6. Die Online Applikation sendet einen OpenID Authentication Request via HTTPRedirect an den OpenID Provider. In diesem Beispiel wird weiters angenommen,
dass die OpenID Attribute Exchange Extension [OpenID_AX] verwendet wird,
sodass später neben dem Identifikator noch mehrere Attribute ausgetauscht
werden können.
7. Die Prozessschritte 7 und 8 sind nur schematisch dargestellt und Details wurden
ausgespart, da sie für das eigentliche Identitätsprotokoll zwischen MOA-ID und
der Online-Applikation von keiner Relevanz sind. Im Wesentlichen wird im Schritt
7 von MOA-ID bei der Bürgerkartenumgebung die Personenbindung der
Bürgerin bzw. des Bürgers ausgelesen und die Erstellung einer qualifizierten
Signatur angefragt.
8. In diesem Schritt ist vereinfacht dargestellt, dass sowohl die aus der Bürgerkarte
ausgelesene Personenbindung als auch die erstellte qualifizierte Signatur an
MOA-ID übermittelt wurden.
9. Nachdem sowohl Personenbindung als auch die qualifizierte Signatur von MOAID erfolgreich überprüft werden konnten, wird eine OpenID Assertion von MOAID generiert, welche die Identitätsdaten und Authentifizierungsdaten beinhaltet.
10. In diesem Schritt wird die Bürgerin bzw. der Bürger vom Fokus mit der
Bürgerkartenumgebung nochmals auf MOA-ID umgeleitet, um wieder dort den
Fokus des Browsers zu erhalten.
11. MOA-ID übermittelt die erstellte Assertion wiederum mittels HTTP-Redirect an die
Online Applikation.
12. Die Gültigkeit der Assertion wird von der Online Applikation überprüft.
13. Die Online Applikation überprüft die übermittelten Identitätsdaten und gewährt
oder verweigert den Zugriff auf das Service.
6.2 Beispiel
Dieser Unterabschnitt zeigt Beispiele für ausgewählte Request- und ResponseNachrichten im gezeigten Szenario.
6.2.1 OpenID Authentication Request (Schritt 6)
In diesem Schritt übermittelt die Online Applikation einen OpenID Authentication
Request an MOA-ID. Ein Request sieht beispielsweise wie folgt aus:
GET /moa-id.gv.at/accounts/o8/ud?
openid.assoc_handle=1.AMlYA9VMPYAFT
&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select
&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select
&openid.mode=checkid_setup
&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0
&openid.return_to=http%3A%2F%2Fonline.applikation.gv.at
&openid.ns.ax=http://openid.net/srv/ax/1.0
&openid.ax.mode=fetch_request
&openid.ax.type.fname=http://example.com/schema/fullname
OpenID
47
HTTP/1.1
Die HTTP-Parameter haben dabei die folgende Bedeutung:
openid.assoc_handle: Ein Identifikator für das zuvor ausgetauschte Secret zum
Signieren von Nachrichten.
openid.claimed_id und openid.identity: In dem Beispiel wird angegeben, dass
der OpenID Provider einen Identifikator für die Benutzerin bzw. den Benutzer wählen soll.
openid.mode: Gibt den Mode an, in diesem Fall, dass die Benutzerin bzw. der Benutzer
mit dem OpenID Provider interagieren kann.
openid.ns: Der Namespace, der diese Version der Spezifikation repräsentiert.
openid.return_to: Rücksprung-URL der Online Applikation nach Authentifizierung.
openid.ns.ax: Namespace für die Attribute Exchange Extension
openid.ax.mode: Gibt den Mode an, dass Attribut-Daten vom OpenID Provider
abgefragt werden.
openid.ax.type.fname: Gibt an, dass der Name der Benutzerin bzw. des Benutzers
abgefragt wird.
6.2.2 OpenID Authentication Response (Schritt 7)
Eine beispielhafte Authorization Response sieht wie folgt aus:
http://online.applikation.gv.at/openid_finish?
&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0
&openid.mode=id_res
&openid.op_endpoint=https%3A%2F%2Fmoa-id.gv.at%2Faccounts%2Fo8%2Fud
&openid.response_nonce=2013-08-23T15%3A56%3A58Zzeh9h37pFQHkMg
&openid.return_to=http%3A%2F% online.applikation.gv.at
&openid.assoc_handle=1.AMlYA9VMPYAFT
&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2
Cassoc_handle
&openid.sig=y8jJ5Je2YlEekXYcKxRCubYP19E%3D
&openid.identity=12345==
&openid.claimed_id=12345==
openid.ax.mode=fetch_response
openid.ax.type.fname=http://example.com/schema/fullname
openid.ax.value.fname=Max Mustermann
Die HTTP-Parameter haben dabei die folgende Bedeutung:
openid.ns: Der Namespace, der diese Version der Spezifikation repräsentiert.
openid.mode: Ist laut Spezifikation auf „id_res“ festgelegt.
openid.op_endpoint: Der Endpoint des OpendID Providers.
openid.response_nonce: String, welcher einzigartig für diese Response ist.
OpenID
48
openid.return_to: Rücksprung-URL der Online Applikation, muss mit jener im Request
übereinstimmen.
openid.assoc_handle: Ein Identifikator für das zuvor ausgetauschte Secret, welches
zum Signieren der Nachrichten verwendet wurde.
openid.signed: Liste der Parameter, welche signiert wurden.
openid.sig: Signatur-Wert in Base64-Kodierung.
openid.identity: Der Identifikator des OpenID Providers.
openid.claimed_id: Der Identifikator der Benutzerin bzw. des Benutzers nach
erfolgreicher Authentifzierung. Im Falle einer Bürgerkartenauthentifzierung das bPK.
openid.ax.mode: Gibt den Mode des Attribute Exchange an, in diesem Fall, dass
Attribute angefragt wurden.
openid.ax.type.fname: Gibt den Typ des übermittelten Attributs an, in diesem Fall der
Name der Benutzerin bzw. des Benutzers.
openid.ax.value.fname: Der Attributwert, der übertragen wird. In diesem Fall der
Name der Benutzerin bzw. des Benutzers.
6.3 Diskussion
Dieser Abschnitt beinhaltet eine Diskussion von OpenID 2.0 anhand der zuvor
ausgewählten Kriterien.
6.3.1 Funktionale Kriterien
Funktionales Kriterium
Diskussion
Transfer von Identitäts- Identitäts- und Authentifizierungsdaten werden mittels
und
einfacher URL-Paramter zwischen den einzelnen beteiligten
Authentifizierungsdaten Parteien ausgetauscht werden. Die Hauptspezifikation definiert
nur den Austausch eines Identifikators, die Erweiterung mittels
Attribute Exchange Spezifikation [OpenID_AX] ermöglicht auch
den Austausch mehrerer Attribute.
Sicherheit
OpenID 2.0 setzt nicht standardmäßig auf SSL/TLS zur
Absicherung
der
Nachrichtenübertragungen,
eine
Verwendung wird nur empfohlen. Wird SSL/TLS nicht verwendet,
ist OpenID anfällig gegen Phishing-Attacken. Optional bietet
OpenID die Möglichkeit, ausgetauschte Nachrichten zu
signieren. Details dazu sind in [OpenID_Auth] spezifiziert.
[OpenID_Auth]
beschreibt
auch
eine
Reihe
von
Sicherheitsbetrachtungen zur Vermeidung von Angriffen.
Einfache
Erweiterbarkeit
Die Spezifikation besteht bereits aus mehreren Teilen, die unter
anderem Erweiterungen zur Kernspezifikation [OpenID_Auth]
beinhalten.
Die
Möglichkeit
zur
Definition
eigener
OpenID
49
Erweiterungen ist einfach gegeben, da auch in der
Kernspezifikation die entsprechende Vorgangsweise für eine
Erweiterung gegeben ist.
Single Sign-On (SSO)
SSO-Funktionalität wird von OpenID selbst nicht konkret
spezifiziert. Aufgrund der Verwendung desselben OpenID
Providers für mehrere Applikationen kann aber SSO über diese
Applikationen erreicht werden.
Single Logout (SLO)
Single Logout wird von OpenID 2.0 nicht unterstützt.
Benutzerinnen
bzw. Möglichkeiten zur Benutzerinnen- bzw. Benutzerzustimmung
Benutzer-Zustimmung
werden in OpenID nicht explizit festgelegt. Die Online
(User Consent)
Applikation kann aber in ihrem Request festlegen, ob die
Benutzerin bzw. der Benutzer mit dem OpenID Provider
interagieren kann.
6.3.2 Organisatorische Kriterien
Organisatorisches
Kriterium
Format
Identifikators
Diskussion
des Prinzipiell gibt die OpenID Spezifikation das Format des
Identifikators vor. Der Identifikator ist entweder eine URL oder
ein XRI (Extensible Resource Identifier) [XRI]. Bei Verwendung
von gewissen Parametern im Authentifizierungsrequest kann
jedoch festgelegt werden, dass der OpenID Provider einen
entsprechenden Identifikator für die Benutzerin bzw. den
Benutzer auswählen soll.
Format/Name weiterer Die Kernspezifikation von OpenID definiert nur eine Anmeldung
Attribute
mittels Identifikator. Die Attribute Exchange Erweiterung
[OpenID_AX] hingegen definiert eigene Namespaces sowie
Attributenamen für gängige persönliche Attribute.
Verbreitungsgrad
Die OpenID 2.0 Spezifikation ist bereits im finalen Status seit
2007. Nach [OpenID_Rev] gab es im Jahr 2009 über 9 Millionen
Websites, die OpenID integriert hatten. Große Provider wie z.B.
Google bieten auch eine Schnittstelle zur OpenIDAuthentifzierung an.
Open-Source
Bibliotheken
Für OpenID 2.0 existieren eine Reihe von Bibliotheken, darunter
auch zahlreiche in Open Source. Bibliotheken stehen dabei in
unterschiedlichen Programmiersprachen zur Verfügung, eine
Liste ist unter [OpenID_Lib] abrufbar.
Interoperabilität
Zu OpenID 2.0 gibt es keine offiziellen Conformance Tests auf
Interoperabilität. Das openid-test Project9 hat jedoch das Ziel,
Interoperabilitätstests zwischen beliebigen OpenID Bibliotheken
9
http://code.google.com/p/openid-test/
OpenID
50
durchzuführen. Zusätzlich gibt es aus vergangenen Jahren eine
Interoperabilitätsmatrix von OSIS [OSIS_I3].
Metadaten
Eine Metadaten-Spezifikation ist in OpenID nicht notwendig, da
z.B. der OpenID Provider und dessen Endpunkt über den von
der Benutzerin bzw. den Benutzer eingegeben Identifier
ermittelt wird.
ApplikationsRegistrierung
Applikationen müssen sich nicht explizit beim OpenID Provider
registrieren. Durch die Eingabe des OpenID Identifikators bei
Authentifizierungsbeginn wird der gewünschte OpenID Provider
ausgewählt, es ist daher keine vorherige Registrierung zwischen
Service Provider und OpenID Provider notwendig.
6.3.3 Technische Kriterien
Technisches Kriterium
Diskussion
Austausch-Format
OpenID verwendet
Datenaustausch.
einfache
URL-Parameter
für
den
Bindings
OpenID unterstützt nur den Datenaustausch via http und einem
Front-Channel-Binding.
Transfer-Protokoll
OpenID unterstützt nur den Datenaustausch via HTTP.
Token-Größe
Nachdem nur URL-Parameter ausgetauscht werden, ist die
Token-Größe gegenüber XML-basierten Lösungen ebenfalls
geringer. Die URL aus dem Beispiel aus Abschnitt 6.2.2 hat
beispielsweise 682 Byte.
Auswahl
des Das Auffinden des Identity Providers ist ein Kernbestandteil des
Identitätsdienstleisters
OpenID Protokolls und dessen Spezifikation. Ein beispielsweise
(IdP Disvocery)
von OpenID verwendetes Protokoll ist Yadis [Yadis].
ApplikationsAuthentifizierung
Nachdem keine Applikations-Registrierung notwendig ist, ist
auch keine Applikations-Authentifizierung notwendig. OpenID
Provider können jedoch die Authentizität einer Applikation
überprüfen, indem die im Request enthaltene Return-URL mit
Hilfe eines Relying Party-Discovery Services auf dessen Existenz
geprüft wird.
SP-initiiert/IdP-initiiert
OpenID unterstützt nur eine SP-initiierte Authentifizierung.
OpenID
51
6.4 Fazit
Die folgende Tabelle 6 listet Stärken und Schwächen von OpenID.
Tabelle 6 - Stärken und Schwächen von OpenID
Stärken
Schwächen
Weit verbreitet
Keine IdP-initiierte Authentifzierung
Leichtgewichtig, da URL-Parameter
Trotz
weiter
Verbreitung
gewünschte Akzeptanz
Viele Implementierungen
Notwendige Sicherheit nicht Out-of-the-Box
spezifiziert
nicht
die
Keine aktuellen Interop-Tests
Keine explizite Applikations-Registrierung bzw.
-Authentifizierung
Die eklatanteste Stärke einer Verwendung von OpenID ist zweifelsohne dessen weite
Verbreitung. Es existieren auch zahlreiche Implementierungen in unterschiedlichen
Programmiersprachen. Vorteil gegenüber XML-basierten Protokollen ist hier, dass nur
URL-Parameter zur Übertragung von Daten verwendet werden.
Obwohl OpenID bereits weit verbreitet ist, genießt es nicht die gewünschte Akzeptanz
sowohl bei Benutzerinnen bzw. Benutzern als auch bei Service Providern. Notwendige
Sicherheitsmechanismen
sind
nicht
Out-of-the-Box
spezifiziert
und
müssen
entsprechend vor deren Verwendung angepasst werden. Aus diesem Grund ist für eine
Verwendung in MOA-ID noch eine genauere Analyse und eine darauffolgende
Anpassung notwendig. Ein Nachteil ist auch, dass der standard-mäßige Identifikator
dem DNS-Format folgt.
OpenID
52
7 CAS
Das Central Authentication Service (CAS)10 wurde ursprünglich von der Yale Universität
entwickelt, später jedoch von Jasig (Java Architectures Special Interest Group) 11
übernommen. Wie auch die meisten der anderen zuvor vorgestellten Protokolle zielt
CAS auf die Verwendung von Single Sign-On über mehrere Online Applikationen ab.
Die Funktionalität von SSO ist im Wesentlichen in der Protokollversion 1.0 [CAS_Prot]
spezifiziert, die Version 2.0 spezifiziert Proxy-Authentifizierung über mehrere Ebenen. CAS
2.0 ist jedoch völlig rückwärtskompatibel zu CAS 1.0. Nachdem Proxy-Authentifizierung
im Rahmen von MOA-ID keine Rolle spielt, wird in diesem Dokument nur die CAS
Version 1.0 genauer betrachtet, welche im Jahr 2005 final veröffentlicht wurde.
7.1 Authentifizierungsablauf
Dieser Unterabschnitt skizziert einen möglichen Authentifizierungsablauf für eine
Bürgerkartenauthentifizierung unter Verwendung von CAS 1.0 [CAS_Arch]. [TZZ+10]
beschreiben bereits eine Implementierung auf CAS 1.0 unter Verwendung von MOA-ID
und der existierenden SAML 1.0 Schnittstelle. In dieser Implementierung wird der CASServer um ein Authentifizierungsplugin erweitert, welches die Kommunikation mit MOAID
und
somit
auch
die
österreischische
Bürgerkarte
unterstützt.
In
dieser
Implementierung wird aber in weiterer Folge davon ausgegangen, dass ein Mapping
zwischen dem bPK der Bürgerin bzw. des Bürgers auf einen Benutzernamen, welcher
beim Service Provider zur Identifizierung benötigt wird, erfolgt. Diese Vorgehensweise
entspricht im Wesentlichen einer Authentifizierung mittels MOA-ID Proxy.
In dem in Abbildung 9 dargestellten Authentifizierungsablauf wird aber davon
ausgegangen, dass das CAS-Protokoll insofern erweitert bzw. profiliert werden kann,
dass anstatt eines Benutzernamens auch mehrere Daten der Benutzerin bzw. Benutzers
übertragen werden können.
10
11
http://www.jasig.org/cas/
http://www.jasig.org
CAS
53
Abbildung 9 - Möglicher MOA-ID Authentifizierungsablauf unter Verwendung von CAS 1.0
Der Prozessfluss wird nun etwas genauer beschrieben.
1. Eine Bürgerin bzw. ein Bürger möchte auf eine geschützte Webseite der OnlineApplikation zugreifen. Die Online Applikation bettet dabei eine URL zur
Authentifizierung ein, die direkt auf den CAS Server MOA-ID zeigt.
2. Mit Klicken auf diese URL wird der Authentifizierungsprozess bei MOA-ID gestartet.
Dabei werden MOA-ID entsprechende Parameter wie z.B. der staatliche
Tätigkeitsbereich bzw. die URL der Online-Applikation, an die die Bürgerin bzw.
der Bürger nach erfolgreicher Authentifizierung umgeleitet werden soll,
übergeben.
3. Die beiden Prozessschritte 3 und 4 sind nur schematisch dargestellt und Details
wurden ausgespart, da sie für das eigentliche Identitätsprotokoll zwischen MOAID und der Online-Applikation von keiner Relevanz sind. Im Wesentlichen wird im
Schritt 3 von MOA-ID bei der Bürgerkartenumgebung die Personenbindung der
Bürgerin bzw. des Bürgers ausgelesen und die Erstellung einer qualifizierten
Signatur angefragt.
4. In diesem Schritt ist vereinfacht dargestellt, dass sowohl die aus der Bürgerkarte
ausgelesen Personenbindung als auch die erstellte qualifizierte Signatur an
MOA-ID übermittelt wurden.
5. Nachdem sowohl Personenbindung als auch die qualifizierte Signatur von MOAID erfolgreich überprüft werden konnten, wird ein sogenanntes Ticket erstellt,
CAS
54
welches einer langen, zufälligen Zahl entspricht. Dieses Ticket ist der zuvor
erfolgreich authentifizierten Person zugeordnet.
6. In diesem Schritt wird die Bürgerin bzw. der Bürger an die Online Applikation
zurückgeleitet. Die URL dieser Weiterleitung enthält dabei das Ticket. Die
Weiterleitung erfolgt dabei über die Bürgerkartenumgebung
7. Die Bürgerin bzw. der Bürger wird an die Online Applikation weitergeleitet.
8. Die Online Applikation extrahiert das mitgelieferte Ticket und sendet dieses via
HTTP Request an MOA-ID.
9. MOA-ID extrahiert das Ticket und überprüft die Existenz und Gültigkeit dieses
Tickets
10. MOA-ID holt die zum Ticket gehörigen Daten der Bürgern bzw. des Bürgers aus
dem internen Speicher. Die Daten der Bürgerin bzw. des Bürgers werden als
HTTP- Response an die Online Applikation übertragen.
11. Basierend auf diesen Daten kann die Online Applikation den Zugriff auf die
Applikation gewähren.
7.2 Beispiel
Dieser Unterabschnitt zeigt Beispiele für ausgewählte Request- und ResponseNachrichten im gezeigten Szenario.
7.2.1 CAS Authentication Request (Schritt 2)
Die Authentifizierung beim CAS Server MOA-ID erfolgt dabei über den Aufruf einer
einfachen URL. Nachdem MOA-ID direkt aufgerufen wird, handelt es sich um eine IdPinitiierte Authentifizierung. Diese aufgerufene URL sieht beispielsweise folgendermaßen
aus:
https://moa-id.gv.at/cas/login?service=http://onlineapplikation.gv.at
Der Parameter service gibt die URL der Online Applikation, an die die Bürgerin bzw.
der Bürger nach einer erfolgreichen Authentifizierung zurückgeleitet werden soll. Wie
bei der Verwendung von SAML 1.0 , kann es nötig sein, dass CAS-Protokoll zu erweitern,
um z.B. Parameter zur Übermittlung des staatlichen Tätigkeitsbereichs zu übertragen.
7.2.2 Redirect with ticket (Schritt 6 und 7)
In diesem Schritt wird die Bürgerin bzw. der Bürger nach erfolgreicher Authentifizierung
an die Online Applikation umgeleitet. Der Redirect enthält ein sogenanntes Ticket
ticket.
http://online-applikation.gv.at?ticket=ST-123456789
CAS
55
7.2.3 Authentifizierungsrequest (Schritt 8)
Im Schritt 8 wird das Ticket via HTTP-Request Parameter von der Online Applikation an
MOA-ID übertragen. Dieser Request sieht beispielsweise wie folgt aus:
https://moa-id.gv.at/cas/validate?
service= http://online-applikation.gv.at
&ticket=ST-123456789
Die Parameter service und ticket enthalten die Werte wie zuvor beschrieben.
7.2.4 Authentifizierungsresponse (Schritt 10)
Die Response auf den Authentifizierungsrequest aus Schritt 8 ist vollkommen
unstrukturiert und enthält ein yes oder no, welche angeben, ob die Authentifizierung
erfolgreich oder nicht war. In der Originalversion von CAS 1.0 wird hier noch zusätzlich
nur der Benutzername übergeben, mit dem sich die Benutzerin bzw. der Benutzer am
CAS-Server angemeldet hat. Damit hier mehrere Daten übertragen werden können,
muss eine entsprechende Vereinbarung sowie erweiterte Spezifikation zwischen MOAID und der Online Applikation getroffen werden. In dem folgenden Beispiel wird davon
ausgegangen, dass mehrere Daten der Benutzerin bzw. des Benutzers übertragen
werden können.
yes
bpk1234==
Max
Mustermann
7.3 Diskussion
Dieser Abschnitt beinhaltet eine Diskussion von CAS 1.0 anhand der zuvor
ausgewählten Kriterien.
7.3.1 Funktionale Kriterien
Funktionales Kriterium
Diskussion
Transfer von Identitäts- Identitäts- und Authentifizierungsdaten werden mittels
und
einfacher URL- bzw. HTTP-Parameter zwischen den einzelnen
Authentifizierungsdaten beteiligten Parteien ausgetauscht. Die CAS Spezifikation
definiert im Wesentlichen nur den Austausch zweier Attribute,
einem boolschen Wert, ob die Authentifizierung erfolgreich war
oder nicht, und dem Benutzernamen, welcher bei der
Authentifizierung verwendet wurde.
Sicherheit
CAS
In der CAS Spezifikation wird von einer notewendigen
Verwendung von SSL/TLS für den sicheren Datenaustausch
nichts erwähnt. Der einzige Sicherheitsmechanismus ist im
Wesentlichen neben der eigentlichen Benutzerauthentifizierung
die Validierung des Tickets.
56
Einfache
Erweiterbarkeit
Die explizite Möglichkeit zur Erweiterung ist in der CAS
Spezifikation nicht festgeschrieben. Prinzipiell spricht aber nichts
dagegen, die Spezifikation durch Hinzufügen von Parametern
zu erweitern und so beispielsweise zu ermöglichen, dass
mehrere Benutzerinnen-Daten bzw. Benutzerdaten übertragen
werden können. Erweitert kann aber einfach der eigentliche
Authentifizierungsprozess werden. Hier gibt es unter anderem
schon unterschiedliche Plugins z.B. für Active Directory, LDAP,
Radius, etc. [Jasig_Wiki]
Single Sign-On (SSO)
Ein wesentlicher Grund der Entwicklung von CAS war SSO. SSO
wird mit Hilfe eines Browser-Cookies (sogenanntes TicketGranting-Cookie) erreicht.
Single Logout (SLO)
Single Logout wird von CAS unterstützt. Es werden dabei aber
nicht alle Online Applikationen benachrichtigt, sondern nur die
Sitzung beim CAS Server beendet.
Benutzerinnen
bzw. Die Möglichkeit zur Benutzerinnen- bzw. Benutzerzustimmung ist
Benutzer-Zustimmung
nur insofern gegeben, dass optional im Protokoll festgelegt
(User Consent)
werden kann, ob eine Benutzerin bzw. ein Benutzer aktiv einer
SSO-Anmeldung zustimmen soll.
7.3.2 Organisatorische Kriterien
Organisatorisches
Kriterium
Format
Identifikators
Diskussion
des Als Identifikator wird im Standard-CAS-Protokoll eine
Benutzername (NetID) verwendet. Das Format dieses
Benutzernamens wird aber nicht spezifiziert.
Format/Name weiterer Die Kernspezifikation sieht keine Übetragung weiterer Attribute
Attribute
außer dem Benutzernamen vor.
Verbreitungsgrad
CAS existiert seit 2005 und wird hauptsächlich im universitären
Bereich zur Vernetzung eingesetzt. Im Jahr 2006 existierten über
100 Universitäten von dieser Implementierung [Wiki_CAS].
Nebenbei setzt auch die Europäische Kommission auf dieses
Protokoll (ECAS).
Open-Source
Bibliotheken
CAS wird von Jasig als Open Source zur Verfügung gestellt. Die
Server-Komponente ist in Java implementiert, ClientBibliotheken stehen in Java, .Net, Perl, etc. zur Verfügung
[CAS].
Interoperabilität
Da sowohl CAS Server als auch zahlreiche Client-Libraries von
Jasig angeboten werden, sollten bei deren Verwendung keine
Interoperabilitätsprobleme auftreten.
Metadaten
CAS spezifiziert keine Metadaten.
CAS
57
ApplikationsRegistrierung
Wie Applikationen am CAS Server registriert werden, wird in der
Spezifikation nicht beschrieben.
7.3.3 Technische Kriterien
Technisches Kriterium
Diskussion
Austausch-Format
OpenID verwendet einfache URL- bzw. HTTP-Parameter für den
Datenaustausch.
Bindings
CAS unterstützt nur den Datenaustausch via HTTP, es wird aber
sowohl für Front-Channel als auch für Back-ChannelKommunikation eingesetzt.
Transfer-Protokoll
CAS unterstützt nur den Datenaustausch via HTTP.
Token-Größe
Bei CAS werden nur URL-Parameter für den Datenaustauch
verwendet, die Token-Größe aus Abschnitt 7.2.4 ist 35 Byte
Auswahl
des IdP Discovery wird von CAS nicht unterstützt. Die Applikation
Identitätsdienstleisters
legt mittels URL bereits den gewünschten Identity Provider fest.
(IdP Disvocery)
ApplikationsAuthentifizierung
Die Authentifizierung von Applikationen am CAS Server erfolgt
mittels
Rücksprung-URL,
an
die
nach
erfolgreicher
Authentifizierung umgeleitet wird.
SP-initiiert/IdP-initiiert
CAS unterstützt nur eine IdP-initiierte Authentifizierung.
7.4 Fazit
Die folgende Tabelle 7 listet Stärken und Schwächen von CAS 1.0.
Tabelle 7 - Stärken und Schwächen von CAS 1.0
Stärken
Schwächen
Eingermaßen stark verbreitet
Nur IdP-initiierte Authentifzierung
Leichtgewichtig, da URL-Parameter
Keine explizite Applikations-Registrierung
Viele
Implementierungen
Authentifizierungsplugins
Einfache Spezifikation
bzw. Notwendige Sicherheit nicht Out-of-the-Box
spezifiziert
Übertragene
limitiert.
Daten
auf
Benutzername
Einfaches Protokoll
Single Logout spezifiziert
CAS
58
Das Central Authentication Service ist relativ – speziell im universitären Umfeld – weit
verbreitet.
Es
existieren
zahlreiche
Implementierungen
in
unterschiedlichen
Programmiersprachen. Wesentlichster Vorteil ist vermutlich, dass die Spezifikation und
das dazugehörige Protokoll sehr einfach gehalten und somit leicht zu implementieren
ist. Durch die Verwendung von URL-Parametern zur Datenübertragung ist es auch sehr
leichtgewichtig.
Aufgrund der Einfachheit des Protokolls sind die Anwendungsfälle auch limitiert. So sind
die übertragenen Daten in der Spezifikation auf einen Benutzernamen beschränkt.
Sollen mehrere Attribute übertragen werden, so muss die Spezifikation enstprechend
erweitert werden. Außerdem ist die Sicherheit des Protokolls limitiert, da z.B. weder
Signaturen noch Verschlüsselung unterstützt wird.
CAS ist zwar ein einfach zu implementierendes Protokoll aber aufgrund der
mangelnden Sicherheitsmechanismen Out-of-the-Box und ohne Erweiterung oder
Anpassung der Spezifikation (z.B. zwingende Verwendung von SSL/TLS) nicht für einen
Einsatz in MOA-ID geeignet.
CAS
59
8 WS-Federation
WS-Federation [WS-Fed] in der aktuellen Version 1.2 aus dem Jahre 2009 ist Teil der WS-*
Spezifikation, welche ein Framework für den sicheren Austausch von Web ServiceNachrichten bereitstellt. WS-Federation erweitert dabei WS-Trust um die Möglichkeit
einer flexiblen föderierten Identitätsmanagement-Architektur. Dabei wird das in WS-*
durchgängig verwendete Modell eines Security Token Services (STS) um die
Anforderungen für ein Identitäsmanagement erweitert, sodass diese Spezifikation
sowohl von Web Services als auch von Web Browsern verwendet werden kann. Die WSFederation Spezifikation beschreibt dabei Vertrauensverhältnisse, das Format von
auszutauschenden Security Tokens, und Protokolle für deren Transfer.
WS-* bzw. WS-Federation zielt generell auf den sicheren Austausch von Web ServiceNachrichten über unterschiedliche Domains bzw. Bereiche ab. Die Verwendung eines
Web Browsers (Passive Requestor) als Client ist eher ein Sonderfall. Vom generellen
Aufbau ist WS-Federation ähnlich zu SAML, da es z.B. einerseits auch auf XML und SOAP
aufsetzt, und andererseits für bestimmte Anwendungsfälle standardisierte Profile
definiert
werden.
Der
für
MOA-ID
notwendige
Anwendungsfall
des
sicheren
Datenaustauschs, wobei einer Bürgerin bzw. ein Bürger über einen Web Browser agiert,
wird im WS-Federation Passive Requestor Profile [WS-Fed] abgebildet. Dieses Profil bildet
auch die Basis für die weitere Beschreibung in den folgenden Unterabschnitten.
8.1 Authentifizierungsablauf
In diesem Unterabschnitt wird ein typischer Authentifizierungsablauf zwischen Resource
Provider (Online Applikation) und Security Token Service/Identity Provider (MOA-ID) auf
Basis von WS-Federation skizziert. Details in der Kommunikation zwischen MOA-ID und
der Bürgerkartenumgebung werden dabei wiederum nicht dargestellt. Abbildung 10
skizziert dabei einen Authentifizierungsablauf auf Basis von WS-Federation. In WSFederation wird nicht streng in Bindings unterschieden wie bei SAML, deswegen wird
auch bei der weiteren Beschreibung keine besondere Unterscheidung getroffen.
Nachrichten können dabei unter Verwendung von HTTP Redirects (HTTP GET) oder
mittels HTTP POST übertragen werden.
WS-Federation
60
Abbildung 10 - Möglicher MOA-ID Authentifizierungsablauf unter Verwendung von WS-Federation
Der Prozessfluss wird nun etwas genauer beschrieben.
1. Eine Bürgerin bzw. ein Bürger möchte auf eine geschützte Webseite der OnlineApplikation zugreifen.
2. Die Online Applikation übermittelt einen Security Token Request via Redirect und
URL-Parameter an den affiliierten Identity Provider (MOA-ID).
3. Die Prozessschritte 3 und 4 sind nur schematisch dargestellt und Details wurden
ausgespart, da sie für das eigentliche Identitätsprotokoll zwischen MOA-ID und
der Online-Applikation von keiner Relevanz sind. Im Wesentlichen wird im Schritt
3 von MOA-ID bei der Bürgerkartenumgebung die Personenbindung der
Bürgerin bzw. des Bürgers ausgelesen und die Erstellung einer qualifizierten
Signatur angefragt.
4. In diesem Schritt ist vereinfacht dargestellt, dass sowohl die aus der Bürgerkarte
ausgelesene Personenbindung als auch die erstellte qualifizierte Signatur an
MOA-ID übermittelt wurden.
5. Nachdem sowohl Personenbindung als auch die qualifizierte Signatur von MOAID erfolgreich überprüft werden konnten, wird eine Security Token von MOA-ID
generiert. Das Security Token ist im Regelfall eine SAML Assertion (siehe Abschnitt
2 bzw. 3), die die Identitätsdaten der Bürgerin bzw. des Bürgers enthält.
6. In diesem Schritt wird die Bürgerin bzw. der Bürger vom Fokus mit der
Bürgerkartenumgebung nochmals auf den Identity Provider umgeleitet, um
wieder dort den Fokus des Browsers zu erhalten.
WS-Federation
61
7. Das
Security
Token
(<wst:RequestSecurityTokenResponse>
inkl.
SAML
Assertion) wird üblicherweise aufgrund dessen Größe mittels HTTP POST an den
Service Provider übermittelt.
8. Basierend auf den Daten der SAML Assertion kann die Online Applikation den
Zugriff auf die Applikation gewähren.
8.2 Beispiel
Dieser Unterabschnitt zeigt Beispiele für Request- und Response-Nachrichten im
gezeigten Szenario.
8.2.1 Authentifizierungsrequest (Schritt 2)
Der Request zum Starten einer Authentifizierung wird dabei im dargestellten Szenario
vom Resource Provider an MOA-ID mittels HTTP-Redirect übermittelt.
https://moa-id.gv.at?
wa=wsignin1.0
&wtrealm=online-applikation.gv.at
&wsreply=https://online-applikation.gv.at
Der Parameter wa gibt dabei an, dass es sich um einen Login-Request handelt, und der
Parameter wtrealm definiert dabei den Bereich bzw. Domain des Resource Providers,
um diesen beim Security Token Service identifizieren zu können. Der Parameter
wsreply gibt die Rücksprung-URL des Resource Providers an.
8.2.2 Authentifizierungsresponse (Schritt 7)
Im dargestellten Szenario wird das Security Token mittels HTTP-POST von MOA-ID an den
Resource Provider übertragen.
Der Parameter wa gibt wiederum die Art der
Kommunikation an und wresult enthält dabei das Security Token.
https://online-applikation.gv.at?
wa=wsignin1.0
&wresult=<wst:RequestSecurityTokenResponse>…</wst:RequestSecurityToken
Response>
Eine beispielhaftes Security Token sieht folgendermaßen aus. Das Security Token enthält
im Wesentlichen nur eine SAML Assertion der Version 1.1 oder 2.0. In diesem Beispiel
wird daher der Inhalt der SAML Assertion nur angedeutet und für Details auf den
Abschnitt 3.3.2 verwiesen.
<wst:RequestSecurityTokenResponse xmlns:wst=" http://docs.oasis-open.org/ws-sx/ws-trust/200512">
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_44cd6604c7a58fff4f5df402310902ad" IssueInstant="2013-08-13T14:18:15.647Z" Version="2.0">
…
</saml2:Assertion>
</wst:RequestSecurityTokenResponse>
WS-Federation
62
8.3 Diskussion
Dieser Abschnitt beinhaltet eine Diskussion von WS-Federation anhand der zuvor
ausgewählten Kriterien.
8.3.1 Funktionale Kriterien
Funktionales Kriterium
Diskussion
Transfer von Identitäts- Identitäts- und Authentifizierungsdaten können in XML und
und
gemäß XML-Schema der WS-Federation- und WS-TrustAuthentifizierungsdaten Spezifikation strukturiert werden. Zahlreiche Use Cases können
damit abgebildet werden.
Sicherheit
WS-Federation bietet die Möglichkeit Security Tokens mit XML
Signaturen zu versehen und bei Bedarf auch zu verschlüsseln.
Für die Absicherung der Transport-Kanäle schreibt WSFederation die Verwendung von SSL/TLS vor. Artifact/Cookies
bei der Verwendung von SSO sollten verschlüsselt werden.
Vorallem hat [Groß05] das Passive Requester Profile überprüft
und formal bewiesen, dass es kryptographisch sicher ist.
Einfache
Erweiterbarkeit
Die Autoren der WS-Federation Spezifikation erwarten sich
sogar die Definition neuer Profile, damit neue Anwendungsfälle
abgedeckt werden können [WS-Fed]. Weiters besitzen die XMLSchema-Spezifikationen
einfache
Möglichkeiten
und
Mechanismen der Erweiterung auf Nachrichtenebene.
Single Sign-On (SSO)
WS-Federation unterstützt SSO über Domängrenzen. Nach [WSFed] können Artifacts/Cookies dafür verwendet werden.
Single Logout (SLO)
WS-Federation unterstützt SLO sowohl am Identity Provider als
auch bei den einzelnen Resource Providern.
Benutzerinnen
bzw. WS-Federation sieht die Möglichkeit einer
Benutzer-Zustimmung
Benutzerinnen- bzw. Benutzerzustimmung vor.
(User Consent)
optionalen
8.3.2 Organisatorische Kriterien
Organisatorisches
Kriterium
Format
Identifikators
Diskussion
des WS-Federation verwendet den allgemeinen Ausdruck
„Claims“ für übertragene Werte wie Identifikatoren oder
Attribute. Als Identifikatoren sind beispielsweise die E-mail
Adresse oder ein „Common Name“ spezifiziert.
Format/Name weiterer WS-Federation spezifiziert weitere Claims, wie z.B. Group. Die
Attribute
Spezifikation erlaubt aber auch die Definition eigener Claims.
Verbreitungsgrad
WS-Federation
Speziell Anbieter im Microsoft und IBM-Umfeld, welche
wesentlich an der Entwicklung der WS-Federation –Spezifikation
63
beteiligt waren, bieten entsprechende Implementierungen der
seit 2009 existierenden Spezifikation an. Besonders in der .NETWelt ist WS-Federation weiter verbreitet [Höll10], erreicht im
Allgemeinen aber nicht den Verbreitungsgrad von SAML
[SecTank].
Open-Source
Bibliotheken
Die Anzahl von Open Source-Bibliotheken ist überschaubar,
meist sind WS-Federation-Implementierungen als zusätzliche
Unterstützung bei SAML-Implementierungen zu finden. Beispiele
für Open Source Implementierungen sind: SourceID 12 , ZXID 13 ,
Open-WSFed11 14 , und Apache CXF Fediz 15 . Einige der
Implementierungen unterstützen jedoch nur die ältere WSFederation Version 1.1.
Interoperabilität
Minimale Anforderungen zur Unterstützung der Interoperabilität
von Implementierungen werden in der Spezifikation (z.B. zum
Passsive Requestor Profile) festgeschrieben.
Namhafte Unternehmen wie z.B. Microsoft oder IBM haben
Interoperability Tests auf Basis von OASIS spezifizierten Interop
Szenarien [WS-Fed-Interop] durchgeführt.
Metadaten
WS-Federation unterstützt eigene
entsprechend spezifiziert sind.
Metadaten,
die
auch
ApplikationsRegistrierung
Applikationen bzw. Resource Provider werden beim Identity
Provider über den Austausch von Metadaten registriert.
8.3.3 Technische Kriterien
Technisches Kriterium
Diskussion
Austausch-Format
WS-Federation basiert
ausgetauschten Daten.
auf
XML
und
somit
auch
die
Bindings
WS-Federation unterscheidet nicht direkt zwischen Bindings. Es
besteht aber die Möglichkeit, Nachrichten via HTTP GET oder
HTTP POST über Front-Channel zu übertragen.
Transfer-Protokoll
WS-Federation bietet nur HTTP als Transportprotokoll an.
Token-Größe
WS-Federation ist XML-basiert und daher ist die Token-Größe
dementsprechend groß. Das Beispiel-Token aus Abschnitt 8.2.2
hat ca. 3,3 KByte.
Auswahl
des WS-Federation bietet in seiner Spezifikation die Möglichkeit zum
Identitätsdienstleisters
Auffinden bzw. zur Auswahl eines Identity Providers.
http://www.sourceid.org/
http://www.zxid.org/
14 http://code.google.com/p/open-wsfed11/
15 http://cxf.apache.org/fediz.html
12
13
WS-Federation
64
(IdP Disvocery)
ApplikationsAuthentifizierung
Applikationen werden über ihre zuvor konfigurierten
Metadaten und eine im Request enhaltene Reply-URL beim
Identity Provider authentifiziert.
SP-initiiert/IdP-initiiert
WS-Federation unterstützt nur eine SP-initiierte Authentifizierung.
8.4 Fazit
Die folgende Tabelle 8 listet Stärken und Schwächen von WS-Federation.
Tabelle 8 - Stärken und Schwächen von WS-Federation
Stärken
Schwächen
Unterstützung zahlreicher Use Cases
„Schwergewichtig“, da XML-basierend
Metadaten-Spezifikation
Profile
müssen
meist
konkretisiert werden.
IdP-Discovery
Umfangreiche Spezifikation
trotzdem
noch
Schlechte Integration mit mobilen Clients
Geringe Verbreitung
Wenige Implementierungen
WS-Federation ist ein sehr umfangreicher Standard der auf den Spezifikationen von WSTrust setzt. Dadurch lassen sich sehr gut zahlreiche Anwendungsfälle abbilden.
Der große Umfang der Spezifikation ist aber auch ein Nachteil, da Profile meist trotzdem
noch konkretisiert werden müssen. WS-Federation hat nicht den Verbreitungsgrad wie
SAML, somit gibt es auch nur vereinzelt Implementierungen. Nachdem WS-Federation
auch auf XML basiert, sind die übertragenen Nachrichten um einiges größer als bei
Protokollen, die nur auf z.B. reine URL-Parameter setzen.
WS-Federation ähnelt sehr stark der Spezifikation von SAML und verwendet teilweise
sogar SAML, hat aber nicht den selben Verbreitungsgrad. Ein Einsatz in MOA-ID wäre
denkbar, doch dürfte sich die Anzahl der Service Provider, die WS-Federation
implementieren, in Grenzen halten.
WS-Federation
65
9 Weitere Protkolle
Dieser Abschnitt enthält weitere Protokolle, die sich unter Umständen für einen Einsatz in
MOA-ID eignen könnten, aber im Rahmen dieses Projekts nicht detaillierter analysiert
wurden.
9.1 STORK
STORK (Secure Identity Across Borders Linked) 16 beschreibt im Wesentlichen ein
Framework für den sicheren Austausch von Identitäts- und Authentifizierungsdaten über
Landesgrenzen hinweg in Europa. Für den Austausch der Daten setzt das STORKProtokoll auf den etablierten Standard SAML 2.0. SAML 2.0 wurde dabei auf die
Anforderungen von STORK angepasst und entsprechend profiliert. Nachdem aber
STORK so wie PVP 2.x beide auf SAML 2.0 aufbauen, wurde im Rahmen dieser Arbeit
auf eine detaillierte Analyse verzichtet.
9.2 Mozilla Persona
Mozilla Persona17 basiert auf dem BrowserID-Protkoll und ist ein von Mozilla propagierter
Standard. Wesentliches Merkmal ist, dass Mozilla Persona speziell auf die Verwendung
von E-Mail-Adressen als Identifikator und Passwort-Authentifzierungen abzielt. Dadurch
ist es für einen Einsatz im Kontext von MOA-ID nicht unbedingt geeignet. Aus diesem
Grund wird ebenfalls auf eine genauere Analyse im Rahmen dieses Projekts verzichtet.
16
17
http://eid-stork.eu/
http://www.mozilla.org/en-US/persona
Weitere Protkolle
66
10 Vergleich
Im Rahmen dieses Abschnitts werden die einzelnen Protokolle untereinander anhand
der ausgewählten Kriterien verglichen. Die Bewertung erfolgt jeweils anhand einer
enstsprechenden Bewertungsskala, deren Bewertungskriterien bzw. Legende nun wie
folgt beschrieben werden. Es wird bei der Bewertung jeweils von existierenden
Spezifikationen bzw. der Standard-Spezifikation ausgegangen. Einige Eigenschaften
lassen sich bei einzelnen Protokollen durchaus verbessern, sofern die Spezifikation
profiliert bzw. entsprechend erweitert wird.
X
...
L, M, H ...
Kriterium wird unterstützt
L (Low), M (Medium), H (High)
10.1 Bewertungsschemata
Die weiteren Unterabschnitte enthalten die entsprechenden Bewertungsschemata für
die einzelnen Kriterien.
10.1.1 Bewertungsschema Funktionale Kriterien
Kriterium
Bewertung
Transfer von Identitäts- X ... Der Transfer von Identitäts- und Authentifizierungsdaten
und
wird unterstützt.
Authentifizierungsdaten
Sicherheit
Sicherheitsvorkehrungen (Verwendung
etc.) sind in der Spezifikation
SSL/TLS,
Signaturen,
L ... Nicht vorgeschrieben
M ... Optional vorhanden
H ... Verpflichtend vorgeschrieben
Einfache
Erweiterbarkeit
Erweiterbarkeit der Spezifikation ist
L ... Nicht vorgesehen
M ... Möglich
H ... Ausdrücklich erwünscht
Single Sign-On (SSO)
X ... Single Sign-On wird unterstützt.
Single Logout (SLO)
X ... Single Logout wird unterstützt.
Benutzerinnen
bzw. Die Zustimmung von Benutzerinnen bzw. Benutzern ist
Benutzer-Zustimmung
L ... Nicht möglich
(User Consent)
M ... Optional möglich
H ... Verpflichtend
Vergleich
67
10.1.2 Bewertungsschema Organisatorische Kriterien
Kriterium
Format
Identifikators
Bewertung
des Das Format des Identifikators ist
L … Nicht vorgegeben
M … Teilweise vorgegeben
H … Fix vorgegeben
Format/Name weiterer Das Format/Name weiterer Attribute ist
Attribute
L … Nicht vorgegeben
M … Teilweise vorgegeben
H … Fix vorgegeben
Verbreitungsgrad
Die Spezifikation ist
L ... Wenig verbreitet
M ... Vereinzelt verbreitet
H ... Weit verbreitet
Open-Source
Bibliotheken
Open Source Bibliotheken sind
L … Nicht vorhanden
M … Vereinzelt vorhanden
H … In mehreren Programmiersprachen vorhanden
Interoperabilität
X ... Die Interoperabilität wird getestet.
Metadaten
X… Metadaten sind spezifiziert.
ApplikationsRegistrierung
Applikations-Registrierung ist
L … Nicht notwendig
M … Nicht genau spezifziert
H … Spezifiziert
10.1.3 Bewertungsschema Technische Kriterien
Kriterium
Bewertung
Austausch-Format
Das Austausch-Format wird qualitativ angegeben.
Bindings
Mögliche Bindings werden qualitativ angegeben.
Transfer-Protokoll
Mögliche Trasnfer-Protokolle werden qualitativ angegeben.
Token-Größe
Ungefähre Token-Größen werden quantitativ angegeben.
Auswahl
des X ... Die Auswahl des Identitätsdienstleisters (IdP Disvocery) wird
Identitätsdienstleisters
Vergleich
68
(IdP Disvocery)
unterstützt.
ApplikationsAuthentifizierung
Applikations-Authentifizierung ist
L … Nicht notwendig
M … Nicht genau spezifziert
H … Spezifiziert
SP-initiiert/IdP-initiiert
Das Protokoll unterstützt folgende Arten der AuthentifizierungInitiierung:
SP … SP-initiiert
IdP … IdP-initiiert
10.2 Vergleich anhand der Kriterien
Die folgenden Unterabschnitte enthalten den Vergleich bzw. die Bewertung der
einzelnen Identitätsprotokolle.
10.2.1 Vergleich anhand funktionaler Kriterien
Protokoll
SAML
1.0
SAML
2.0
OAuth 2.0
OpenID
Connect
OpenI
D 2.0
CAS 1.0
WSFederati
on 1.2
Transfer
von
Identitäts- und
Authentifizierun
gsdaten
X
X
X
X
X
X
X
Sicherheit
L
H
M
H
M
L
H
Einfache
Erweiterbarkeit
H
H
H
H
H
M
H
Single
(SSO)
Sign-On
X
X
X
X
X
X
X
Single
(SLO)
Logout
X
X
M
M
/
Kriterium
Benutzerinnen
bzw. BenutzerZustimmung
(User Consent)
X
L
M
M
M
M
Funktional eignen sich alle Protokolle für einen Einsatz in MOA-ID, aufgrund der
Sicherheit sind jedoch SAML 2.0, OpenID Connect bzw. WS-Federation bei Verwendung
der
jeweiligen
Out-of-the-Box-Spezifikation
zu
bevorzugen.
Bei
entsprechender
Profilierung oder Erweiterung kann auch bei den anderen Protokollen ein höheres
Vergleich
69
Sicheheitsmaß erreicht werden. Alle Protokolle sind einfach erweiterbar, außer CAS, wo
eine Erweiterung des Protokolls nicht unbedingt vorgesehen ist. SSO wird auch von
allen Protokollen explizit bzw. implizit unterstützt, SLO jedoch nur von SAML 2.0, CAS, und
WS-Federation. Eine Benutzerinnen- bzw. Benutzer-Zustimmung ist bei den meisten
Protokollen optional möglich, außer bei SAML 1.0, wo dies nicht vorgesehen ist.
10.2.2 Vergleich anhand organisatorischer Kriterien
Protokoll
SAML
1.0
SAML
2.0
OAuth 2.0
OpenID
Connect
OpenI
D 2.0
CAS 1.0
WSFederati
on 1.2
Format
des
Identifikators
M
M
L
M
M
M
M
Format/Name
weiterer
Attribute
L
L
L
M
H
L
M
Verbreitungsgra
d
L
H
H
L
H
M
L
Open-Source
Bibliotheken
M
H
H
L
H
H
M
/
Kriterium
Interoperabilität
X
Metadaten
X
ApplikationsRegistrierung
M
H
X
X
X
M
H
L
M
H
Das Format des Identifikators ist bis auf OAuth bei allen Protokollen zum Teil
vorgegeben. OAuth zielt aber speziell auf Autorisierung ab, und daher ist das Format
ziemlich offen, weil die übertragenen Daten nicht unbedingt Identitätsdaten sein
müssen. Formate oder Namen von weiteren Attributen ist zumeist offen gestaltet, nur
OpenID Connect, OpenID, und WS-Federation spezifizieren neben Identifikatoren auch
weitere Attribute genauer. Der Verbreitungsgrad ist bei SAML 2.0, OAuth, und OpenID
hoch. SAML 1.0 ist bereits veraltet, OpenID Connect erst noch im Draft-Status, CAS
hauptsächlich im universitären Umfeld zu finden, und WS-Federation hat sich nicht
wirklich durchgesetzt. Der Verbreitungsgrad spiegelt sich daher auch ein wenig bei der
Verfügbarkeit von Open Source-Bibliotheken nieder, so existieren bei den gängigen
Protokollen auch meist Implementierungen in unterschiedlichen Programmiersprachen.
Die Interoperabilität zwischen Implementierungen wird nur bei vereinzelten Protokollen
explizit getestet, nämlich bei SAML 2.0, OpenID, und WS-Federation. Metadaten sind
überhaupt nur bei zwei Protokollen spezifiziert, nämlich bei den aktuelleren XML-
Vergleich
70
basierten Protokollen SAML 2.0 und WS-Federation. Dies spiegelt sich auch in der
Spezifzierung der Applikations-Registrierung wider, welche neben SAML 2.0 und WSFederation auch bei OpenID Connect explizit spezifiziert ist. Bei den anderen
Protokollen ist entweder keine Registrierung notwendig (OpenID) bzw. ist diese nicht
genau spezifiziert (SAML 1.0, OAuth, CAS).
10.2.3 Vergleich anhand technischer Kriterien
Protokoll
/
SAML
1.0
SAML
2.0
OAuth 2.0
OpenID
Connect
OpenI
D 2.0
XML
CAS 1.0
XML
URLParameter,
JSON
URLParameter,
JSON
URLParamete
r
URLParameter
XML
SOAP,
HTTPRedirect,
HTTP-POST
SOAP,
HTTPRedirec
t, HTTPPOST,
etc.
URLParameter
(GET und
POST)
URLParameter
(GET und
POST)
URLParamete
r
URLParameter
URLParameter
(GET und
POST)
HTTP,
SOAP
HTTP,
SOAP
HTTP
HTTP
HTTP
HTTP
HTTP
3,14 KB
5,7KB
77 Byte
121 Byte
682
Byte
35 Byte
3,3 KB
X
X
Kriterium
AustauschFormat
Bindings
TransferProtokoll
Token-Größe
Auswahl
des
Identitätsdienstl
eisters
(IdP
Disvocery)
X
WSFederati
on 1.2
X
ApplikationsAuthentifizierun
g
H
H
M
M
L
H
H
SP-initiiert/IdPinitiiert
IdP
SP,
IDP
SP
SP
SP
IdP
SP
Das Austauschformat ist bei SAML 1.0, 2.0 und WS-Federation XML, während bei den
anderen Protokollen nur URL-Parameter bzw. bei OAuth und OpenID Connect auch
noch zusätzlich JSON eingesetzt wird. Dies spiegelt sich auch in der Größe der jeweils
übertragenen Daten wider, wo zu Schwankungen zwischen einigen Bytes bis zu einigen
KBytes kommen kann. Beim Transferprotokoll kommt im Wesentlichen nur HTTP zum
Einsatz, SOAP wird nur bei SAML noch verwendet. Bei den Bindings sind sowohl Front- als
auch Back-Channel-Bindings im Einsatz, rein Front-Channel wird nur bei OpenID und
WS-Federation verwendet. Die Auswahl des Identity Providers ist nur bei SAML 2.0,
OpenID Connect, OpenID, und WS-Federation möglich, wobei diese Funktionalität bei
Vergleich
71
OpenID zum Standard-Protokoll gehört. Eine Applikations-Authentifizierung ist bei den
meisten Protokollen spezifiziert, bei OAuth bzw. OpenID Connect ist dies nicht genau
geregelt, OpenID benötigt nicht unbedingt eine Authentifizierung der Applikation.
Vergleich
72
11 Zusammenfassung
Viele Identitätsprotokolle haben sich bereits über die letzten Jahre für einen sicheren
Austausch von Identitäts- und Authentifizierungsinformationen etabliert, einige sind
gerade erst dabei den Markt zu erobern. Im Rahmen dieses Projekts wurden
unterschiedliche Identitätsprotokolle auf deren Eignung für einen Einsatz im Rahmen
von
MOA-ID
untersucht
und
anhand
unterschiedlicher
Kriterien
(funktional,
organisatorisch, technisch) miteinander verglichen.
Von den analysierten Protokollen eignen sich besonders SAML 2.0 bzw. OpenID
Connect für einen Einsatz in MOA-ID. SAML 2.0 wird bereits in PVP 2.x verwendet und
hat aufgrund der Veröffentlichung der Spezifikation im Jahr 2005 eine weite
Verbreitung. SAML ist sehr mächtig und es können unterschiedliche Anwendungsfälle
abgebildet werden. Aufgrund der möglichen Verwendung von Signaturen bzw.
Verschlüsselung ist auch ein hohes Maß an Sicherheit gegeben.
Eine leichtgewichtigere Alternative zu SAML 2.0, die nicht auf XML sondern auf URLParameter und JSON setzt, ist OpenID Connect. OpenID Connect setzt auf OAuth auf,
welches ebenfalls bereits weit verbreitet eingesetzt wird. Vorteil von OpenID Connect
gegenüber OAuth ist jedoch, dass OpenID Connect das Ziel der Authentifizierung und
nicht der Autorisierung besitzt. Entsprechende Sicherheitsmechanismen sind gegeben,
da bei entsprechender Erweiterung auch Signaturen und Verschlüsselung eingesetzt
werden kann. OpenID Connect ist jedoch derzeit nur im Draft-Status, womit mit einer
weiteren Verbreitung erst in Zukunft zu rechnen ist. Aufgrund dessen weiter Verbreitung
ist auch OpenID 2.0 eine Alternative, dessen Verwendbarkeit jedoch noch einer
genaueren Analyse bedarf.
Bei den weiteren Protokollen könnte zwar WS-Federation 1.2 im Rahmen von MOA-ID
Verwendung finden, die geringe Verbreitung von WS-Federation lassen jedoch an
deren Einsatztauglichkeit zweifeln. Eine Verwendung von CAS 1.0 wäre rein technisch
bei entsprechender Erweiterung auch möglich, jedoch ist aufgrund geringerer
Sicherheitsvorkehrungen im Standard-Protokoll von einer Verwendung abzuraten.
Zusammenfassung
73
Dokumentenhistorie
Version
Datum
Autor(en)
Anmerkung
0.1
10.04.2013
Bernd
Zwattendorfer
Grobstruktur,
Protokolle
0.2
24.04.2013
Bernd
Zwattendorfer
Auswahl der Kriterien
0.3
06.08.2013
Bernd
Zwattendorfer
SAML 1.0, SAML 2.0
0.4
27.08.2013
Bernd
Zwattendorfer
OAuth, OpenID Connect, OpenID
0.5
03.09.2013
Bernd
Zwattendorfer
CAS, WS-Federation
0.6
20.09.2013
Bernd
Zwattendorfer
Finalisierung vollständiger Draft
0.7
24.09.2013
Arne Tauber
Kommentare
1.0
26.09.2013
Bernd
Zwattendorfer
Finalisierung
Zusammenfassung
Auswahl
der
74
Referenzen
[CAS]
Jasig: CAS, http://www.jasig.org/cas
[CAS_Arch]
Jasig: CAS 1 Architecture, 2009, http://www.jasig.org/cas/cas1architecture
[CAS_Prot]
Jasig
(Drew
Mazurek):
http://www.jasig.org/cas/protocol
[Groß05]
T. Groβ, B. Pfitzmann, und A. Sadeghi: “Proving a WS-federation
passive requestor profile with a browser model”, Proceedings of
the 2005 Workshop on Secure Web Services 2005, pp. 54-64
[Höll10]
Thorsten
Höllrigl:
Informationskosistenz
Identitätsmanagement, 2010, Dissertation
[Internet2]
Internet2 Mailing List Service: Interoperability tests with 9 SAML
products, https://lists.internet2.edu/sympa/arc/mace-opensamlusers/2005-04/msg00007.html
[Jasig_Wiki]
Jasig
Wiki:
Authentication,
https://wiki.jasig.org/display/CASUM/Authentication
[JWT]
OAuth Working Group: JSON Web Token (JWT), Internet-Draft , Juli
2013,
http://self-issued.info/docs/draft-ietf-oauth-json-webtoken.html
[Kantara_eGov]
Kantara Initiative: eGovernment
CAS
Protocol,
im
2005,
föderativen
2009,
Implementation
Profile
of
SAML
V2.0,
Juni
2010,
http://kantarainitiative.org/confluence/download/attachments/4
2139782/kantara-egov-saml2-profile-2.0.pdf
[Kantara_IOP]
Kantara Initiative: SAML Interoperable Implementations, Tools,
Libraries
and
Services,
2010,
http://kantarainitiative.org/programs/iop-saml/
[OAuth1]
IETF:
The
OAuth
1.0
http://tools.ietf.org/html/rfc5849c
[OAuth2]
IETF: The OAuth 2.0 Authorization
http://tools.ietf.org/html/rfc6749
[OAuth2_Bearer]
IETF: The OAuth 2.0 Authorization Framework: Bearer Token Usage,
RFC 6750, http://tools.ietf.org/html/rfc6750
[OAuth2_Code]
OAuth.net: Code, http://oauth.net/code/
[OAuth_SAML]
OAuth Working Group: SAML 2.0 Profile for OAuth 2.0 Client
Authentication and Authorization Grants, Internet-Draft 17, Juli
2013, http://tools.ietf.org/html/draft-ietf-oauth-saml2-bearer-17
[OAuth2_SEC]
IETF: OAuth 2.0 Threat Model and Security Considerations,
RFC6819, http://tools.ietf.org/html/rfc6819
[OAuth_Wiki]
Wikipedia: OAuth, http://en.wikipedia.org/wiki/OAuth
Zusammenfassung
Protocol,
RFC
Framework,
RFC
75
5849,
6749,
[OIDCon_Disc]
OpenID Foundation: OpenID Connect Discovery 1.0, Draft 17,
http://openid.net/specs/openid-connect-discovery-1_0.html
[OIDCon_Reg]
OpenID Foundation: OpenID Connect Dynamic Client
Registration 1.0, Draft 19, http://openid.net/specs/openidconnect-registration-1_0.html
[OIDCon_Session]
OpenID Foundation: OpenID Connect Session Management 1.0,
Draft
15,
http://openid.net/specs/openid-connect-session1_0.html
[OpenID_Auth]
OpenID
Foundation:
OpenID
Authentication
http://openid.net/specs/openid-authentication-2_0.html
[OpenID_AX]
OpenID
Foundation:
OpenID
Attribute
Exchange
1.0,
http://openid.net/specs/openid-attribute-exchange-1_0.html
[OpenID_Lib]
OpenID Foundation: Libraries,
http://openid.net/developers/libraries/
[OpenID_Rev]
B. Kissel: OpenID 2009 Year in Review, Dezember
http://openid.net/2009/12/16/openid-2009-year-in-review/
[OSIS_I3]
OSIS: I3:Cross Solution OpenID Identity Provider x Relying Party
Results,
http://osis.idcommons.net/wiki/I3:Cross_Solution_OpenID_Identity_
Provider_x_Relying_Party_Results
[PVP2]
BLSG: Portalverbundprotokoll (PVP)
government.gv.at/PVP2.2761.0.html
[SAML_20]
OASIS: SAML 2.0, http://saml.xml.org/saml-specifications#samlv20
[SAML2_Overview]
OASIS: Security Assertion Markup Language
2.0,
2.0,
2009,
http://reference.e-
(SAML) V2.0 Technical Overview, März 2008
[SAML_21]
OASIS: SAML 2.1, https://wiki.oasis-open.org/security/SAML21
[SAML_Impl]
http://saml.xml.org/wiki/saml-open-source-implementations
[SAML_Kant_Impl]
Kantara Initiative: SAML Interoperable Implementations, Tools,
Libraries and Services, http://kantarainitiative.org/programs/iopsaml/
[SAML1_SEC]
OASIS: Security and Privacy Considerations for the OASIS Security
Assertion Markup Language (SAML), OASIS Standard, November
2002,
http://www.oasisopen.org/committees/download.php/2290/oasis-sstc-saml-1.0.zip
[SAML2_Bindings]
OASIS: Bindings for the OASIS Security Assertion Markup Language
(SAML) V2.0, OASIS Standard, März 2005
[SAML2_Metadata] OASIS: Metadata for the OASIS Security Assertion Markup
Language (SAML) V2.0, OASIS Standard, März 2005
[SAML2_Profiles]
OASIS: Profiles for the OASIS Security Assertion Markup Language
(SAML) V2.0, Standard, März 2005
[SAML2_SEC]
OASIS: Security and Privacy Considerations for the OASIS Security
Assertion Markup Language (SAML) V2.0, OASIS Standard, März
Zusammenfassung
76
2005
[SecTank]
Wolfram Funk: Identity Federation Standards für Cloud Services,
SecTank - Das IT-Security Blog, http://sectank.net/?p=837
[SL]
Arno Hollosi, Gregor Karlinger, Thomas Rössler, Martin Centner, et
al.:
Die
österreichische
Bürgerkarte,
Version
1.2,
http://www.buergerkarte.at/konzept/securitylayer/spezifikation/a
ktuell/
[TZZ+10]
Arne Tauber, Bernd Zwattendorfer, Thomas Zefferer, Yasmin
Mazhari, Eleftherios Chamakiotis: Towards Interoperability: An
Architecture for Pan-European eID-based Authentication
Services, Electronic Government and the Information Systems
Perspective, 2010, pp. 120-133
[Wiki_CAS]
Wikipedia:
Central
Authentication
Service,
http://en.wikipedia.org/wiki/Central_Authentication_Service
[WS-Fed]
OASIS: Web Service Federation Language (WS-Federation)
Version
1.2,
2009,
http://docs.oasisopen.org/wsfed/federation/v1.2/ws-federation.pdf
[WS-Fed-Interop]
OASIS: WSFED TC Interop Scenarios, 2007, https://www.oasisopen.org/committees/download.php/25931/WSFED-TCInteropScenarios-ED01.doc
[XRI]
OASIS: OASIS Extensible
Resource Identifier
https://www.oasisopen.org/committees/tc_home.php?wg_abbrev=xri
[Yadis]
Infogrid: Yadis, http://infogrid.org/trac/wiki/Yadis
[ZZA12]
Bernd Zwattendorfer, Thomas Zefferer, Arne Tauber: The
Prevalence of SAML within the European Union - An Empirical
Study, WEBIST 2012, pp. 571-576
Zusammenfassung
(XRI)
77
TC,