Anbindung mit OpenID Connect
Das ID Austria System stellt OpenID Connect (OIDC) gemäß der OpenID Connect Spezifikation bereit. Die nachfolgende Beschreibung zeigt eine Anbindung einer Anwendung mittels OIDC am ID Austria System. Detailierte Beschreibungen zu OpenID Connect stehen unter dem nachfolgenden Link zur Verfügung: OIDC Spezifikationen
ID Austria spezifische Eigenschaften für OIDC
- Vom ID Austria System wird ausschließlich der Authorization Code Flow (Response-Type: code) entsprechend der OIDC Spezifikation unterstützt.
- Eine Authentifizierung des Service Providers/Clients mittels client_secret ist verpflichtend. Das client_secret wird im Zuge der Registrierung am IDA-SPR erstellt.
- Das ID Austria System fordert als client_id eine URL welche im Kontext der Anwendung liegen muss.
- Im ID Austria System erfolgt die Anforderung von Attributen über die IDA SP Registrierung (IDA-SPR) und somit haben die für OIDC definierten Scopes keinen direkt Einfluss auf die ausgelieferten Claims. Aus Kompatiblitätsgründen wird jedoch empfohlen, die Scopes „openid“ und „profile“anzufragen.
- Zusätzlich zu den in OIDC spezifizierten Claims, welche im Scope „profile“ definiert sind, unterstützt das ID Austria System spezifische Claims. Eine vollständige Liste aller aktuell vom ID Austria Sysem unterstützten Claims finden Sie im Abschnitt Übersicht der Personenmerkmale.
OIDC Endpunkte am IdP
Produktivsystem
- OIDC Configurations Discovery: https://eid.oesterreich.gv.at/.well-known/openid-configuration
- Authorization Endpoint: https://eid.oesterreich.gv.at/auth/idp/profile/oidc/authorize
- Token Endpoint: https://eid.oesterreich.gv.at/auth/idp/profile/oidc/token
- JWKs URI: https://eid.oesterreich.gv.at/auth/idp/profile/oidc/keyset
Testsystem
- OIDC Configurations Discovery: https://eid2.oesterreich.gv.at/.well-known/openid-configuration
- Authorization Endpoint: https://eid2.oesterreich.gv.at/auth/idp/profile/oidc/authorize
- Token Endpoint: https://eid2.oesterreich.gv.at/auth/idp/profile/oidc/token
- JWKs URI: https://eid2.oesterreich.gv.at/auth/idp/profile/oidc/keyset
Die OpenID Connect Anbindung im ID Austria System steht sowohl für klassische Browser basierte Anwendung als auch für Applikationen auf mobilen Geräten zur Verfügung. (Native) Mobile Apps können somit via OIDC eine Anmeldung mittels ID Austria integrieren. Was für mobile Apps speziell zu beachten ist, ist im zweiten Abschnitt beschrieben.
Anmeldung mittels OIDC
Eine ID Austria Anmeldung mittels OIDC kann in sämtlichen Szenarien durchgeführt werden. Beispiele dafür sind:
- mit einem herkömmlichen Web-Browser auf einem PC / Laptop
- mit einer nativen App
- mit einem mobilen Browser auf einem Smartphone
Wird die ID Austria Anmeldung auf einem mobilen Gerät durchgeführt, ist der Prozessfluss der Authentifizierung für den Benutzer bzw. die Benutzerin davon abhängig, ob die App "ID Austria" am Smartphone installiert und initialisiert ist. Ob die App "ID Austria" installiert ist oder nicht, hat keine Auswirkungen auf den Prozessfluss der OIDC Implementierung beim Service Provider.
Jede OIDC Anmeldung startet mit einem Authentifizierungsrequest an den IdP. Dieser wird üblicherweise direkt vom Client (Browser, App) als HTTP GET oder HTTP POST Request an den IdP gesendet. Der Request erfolgt an den Authorization Endpoint des IdP.
Authentifizierungsrequest bei Verwendung des OIDC Authorization Code Flows:
https://eid2.oesterreich.gv.at/auth/idp/profile/oidc/authorize?response_type=code &client_id=https%3A%2F%2Fbeispielservice.at &redirect_uri=https%3A%2F%2Fbeispielservice.at%2Fcb &scope=openid+profile+eid&state=1234567890
- response_type: Der Response Typ muss mit „code“ angegeben werden da vom ID Austria System nur der Authorization Code Flow unterstützt wird.
- client_id: Der eindeutige Identifikator der SP Applikation, die am ID Austria System registriert sein muss. Das ID Austria System fordert als client_id eine URL welche im Kontext der Anwendung liegen muss.
- scope: Definiert in OIDC das Set von Identitätsinformationen welche vom IdP angefordert werden. Im ID Austria System erfolgt die Anforderung von Attributen über die IDA SP Registrierung und somit wird in diesem Zusammenhang empfohlen die Scopes openid und profile anzufragen.
- redirect_uri: Die Redirect URI definiert die Client-Callback URI an welche das ID Austria System die Authentication Response an den Service Provider ausliefern soll. Hierfür sind ausschließlich http(s) URLs zulässig.
- state: Optionaler jedoch empfohlener Parameter als CSFR / XSRF Schutz um den State zwischen Request und Callback beizubehalten.
Der folgende OpenID Connect Authentifizierungsrequestparameter wird nicht unterstützt:
- request_uri: Das aktive Abholen eines Authentifizierungsrequests beim Service-Provider (OpenID Connect requests to be passed by reference) wird vom ID Austria System nicht unterstützt und führt zum Abbruch des Anmeldevorgangs.
- response_mode=form_post: Der Response Mode form_post , welcher in OAuth 2.0 Form Post Response Mode definiert ist, wird vom ID Austria System nicht unterstützt und führt zum Abbruch des Anmeldevorgangs.
Anschließend antwortet der IdP dem Client mit einer Auswahl an Möglichkeiten zur Authentifizierung (ID Austria oder eIDAS), wie in Abbildung 1 dargestellt.

Nach einer erfolgreichen Authentifizierung am IdP, antwortet dieser dem Client mit einer (erfolgreichen) Authentication Response, die den Authorization Code gemäß dem OIDC Authorization Code Flow beinhaltet:
Erfolgreiche Authentication Response vom IdP:
HTTP/1.1 302 Found
Location: https://beispielservice.at/cb
code=QXV0aEhhbmRsZXIxfDIwMjA...&state=af0ifjsldkj
Der Authorization Code wird im Anschluss (üblicherweise vom SP Backend Service) in einem Token-Request an den Token-Endpoint des IdP gesendet, zusammen mit einem registrierten Client-Secret:
Beispiel
OIDC Token-Request:
POST https://eid.oesterreich.gv.at/auth/idp/profile/oidc/token
HTTP/1.1
Im Body des Post Requests werden die Parameter ‚code‘, ‚grant_type‘, ‚client_secret‘, ‚redirect_uri‘ und die ‚client_id‘ als application/x-www-form-urlencoded übermittelt. Die Verwendung eines ‚client_secrets‘ ist auf jeden Fall verpflichtend und unabhängig davon ob der Flow mit PKCE (RFC7636) abgesichert wurde oder nicht.
OIDC Token-Request Body:
code=QXV0aEhhbmRsZXIxfDIwMjAtMDMtMzAgMTM6NTk....
&grant_type=authorization_code
&client_secret=secret
&redirect_uri=https://beispielservice.at/cb
&client_id=274582323476.beispielservice.at
Nach erfolgreicher Validierung des Authorization Codes durch den IdP antwortet dieser mit einer OIDC Successful Token Response, die das OIDC idToken enthält. Dieses idToken liefert die angeforderten Attribute (Claims) in Form eines JSON Web Tokens.
Das vom IDP übertragene idToken ist immer mit einer JWS Signatur versehen und somit durch das ID Austria System signiert. Zusätzlich kann das idToken auch mittels eines am ID Austria SP Registrierungssystem (IDA-SPR) hinterlegten Verschlüsselungszertifikat verschlüsselt werden. Im Falle einer zusätzlichen Verschlüsselung des idToken ist dieses entsprechend der OIDC Spezifikation zuerst signiert und anschließend verschlüsselt.
OIDC Successful Token Response vom IdP:
{
"access_token": "ABlzaGliYm9sZXRoLWRhdGFzZWFsZXItZW5jU....."
"token_type": "Bearer",
"expires_in": "600",
"scope": "openid profile",
"id_token": "eyJraWQiOiI4M2EzYzVmZDNlNWQ3YmZjMDI0NDNi....."
}
Die vollständige Response inklusive JWS Signatur kann hier (ZIP, 9 KB) heruntergeladen werden.
Die JWS Signatur des id_token beinhaltet den:
- JWS Signaturheader mit Metadaten zur JWS Signatur
- PayLoad welche die Attribute des Benutzer bzw. der Benutzerin und weitere Authentifizierungsmerkmale beinhaltet
- JWS Signaturwert
Payload des OIDC id_token (dekodiert):
{
"at_hash" : "eFoCYhxqGK5O8kDvqPd1uQ",
"aud" : "https://eid.egiz.gv.at/eidpilot_q_oidc",
"auth_time" : 1678892052,
"exp" : 1678895653,
"iat" : 1678892053,
"iss" : "https://eid2.oesterreich.gv.at",
"sub" : "IFOQP3T5XYLMSDOQAEGMF52MWGMWBPXN",
"birthdate" : "1983-06-04",
"urn:pvpgvat:oidc.eid_ccs_url" : "https://hs-abnahme.a-trust.at/securitylayer2",
"urn:pvpgvat:oidc.pvp_version" : "2.2",
"urn:pvpgvat:oidc.eid_citizen_qaa_eidas_level" : "http://eidas.europa.eu/LoA/high", "urn:pvpgvat:oidc.eid_online_identity_link" : ...
"given_name" : "XXXŐzgür",
"sid" : "_8dbfcf553c7f9b6d10bd068bacc6405b",
"urn:pvpgvat:oidc.eid_identity_status_level" :
"http://eid.gv.at/eID/status/testidentity",
"urn:pvpgvat:oidc.bpk" : "ZP-MH:KQMY8Sl9WsmBxrYrYOiFS2VkLyo=",
"family_name" : "XXXTüzekçi"
}
Die vollständige Payload des id_token (ZIP, 3 KB) steht auch zum Download zur Verfügung.
Hinweis
Der sub Claim liefert einen transienten Identifier und ist somit nicht zur Wiedererkennung von Personen geeignet. Zur Wiedererkennung muss der bPK Claim verwendet werden.
Verwendung von OIDC in nativen Apps
Die Verwendung von OIDC ist aus Protokollsicht grundsätzlich in allen Varianten ähnlich. Das heißt unabhängig davon, ob OIDC in einem Browser-basierten Flow Verwendung findet oder ob OIDC in einem App2App Szenario, bei welchem die ID Austria Anmeldung in eine nativen App integriert wird, zum Einsatz kommt. Durch die App2App Kommunikation auf mobilen Geräten und damit verbundenen plattformspezifischen Eigenheiten ergeben sich jedoch spezielle Aspekte für die Integration von OIDC welche in OpenID Connect für mobile Apps im Detail beschrieben werden.