Anbindung via OpenID Connect

Registrierung

Für die Anbindung als Early Adopter mittels OpenID Connect müssen OIDC-Metadaten für den jeweiligen Service Provider registriert werden.

Diese Metadaten müssen zumindest Folgendes beinhalten:

{
„scope“:“…“,
„redirect_uris“:[„https://…“],
„client_id“:“https://…“,
„response_types“:[„…“],
}

Zu Erklärung der Parameter:

scope = Eine durch Leerzeichen getrennte Liste an akzeptierten Scopes des Clients. Mögliche Scopes: „openid“, „profile“, „e-id“.
client_id = Id des Clients als String.
redirect_uris = Ein Array von Strings mit den akzeptierten Redirect Uris des Clients.
response_types = Ein Array von Strings mit den akzeptierten Response_types des Clients. Mögliche response_types: “code“, “id_token“, “token id_token“, “code token“, “code token id_token“.

Prozessfluss für OpenID Connect Anwendungen

Prozessfluss für Anmeldungen im Web-Browser

Die Anmeldung via Web-Browser kann mit zwei unterschiedlichen Varianten durchgeführt werden, abhängig von der verwendeten Client-Komponente. Eine Anmeldung kann mit einem herkömmlichen Web-Browser auf einem PC/Laptop, oder einem mobilen Browser auf einem Smartphone durchgeführt werden. Wird die Anmeldung mittels mobilem Browser durchgeführt, ist der Prozessfluss der Authentifizierung davon abhängig, ob die E-ID App am Smartphone installiert und initialisiert ist. Aus diesen Gründen wird im folgenden Kapitel zwischen mehreren Anmeldevarianten auf mobilen Geräten unterschieden.

Unter folgendem Link wird eine detaillierte Darstellung des Prozessflusses für SAML2/OIDC Anmeldungen für Web Browser Anwendungen geboten:

Detaillierter Prozessfluss für SAML2/OIDC Anmeldungen in Web Browser Anwendungen

Anmeldungen auf mobilen Geräten

Für die Anmeldung bei einem Service Provider mit einem mobilen Gerät, ergeben sich ebenfalls verschiedene Varianten, durch unterschiedliche Komponenten, die auf den Smartphones der BenutzerInnen zum Einsatz kommen können.

Dieses Kapitel beschreibt die technischen Prozesse für Service Provider Apps, über welche eine Authentifizierung mittels OpenID Connect mit oder ohne einer lokal installierten Identity Provider App (E-ID App) durchgeführt werden kann.

Für die Umsetzung der erforderlichen Identifikation, Authentifizierung und Erstellung einer qualifizierten Signatur beim VDA, zur Durchführung einer Client TLS Authentifizierung, sowie zur Anforderung eines OIDC Autorisierungstokens, etc. wurden diverse Plugins für Service Provider Apps und die E-ID App implementiert, die nachfolgend kurz beschrieben werden.

Abbildung 2: Service Provider App und E-ID App Komponenten

Service Provider App

E-ID Client – Dieser Client stellt die Schnittstelle zum E-ID App dar und implementiert die Interprozesskommunikation (IPC).
Er implementiert außerdem die notwendigen Schritte einer Signaturerstellung.

Allgemeine Informationen zur Authentifizierung mittels OpenID Connect:

  1. Die Authentifizierung muss beim Identity Provider erfolgen, wo die Sitzung oder Anmeldeinformationen des Benutzers überprüft werden. Dafür ist für OpenID Connect ein vertrauenswürdiger User Agent (Browser) erforderlich, wobei diese Rolle normalerweise vom Webbrowser übernommen wird.

  2. Ein Browser-Popup ist die bevorzugte Methode für eine Webanwendung, um den Benutzer zum Identity Provider umzuleiten. Mobile Apps auf Plattformen wie Android oder iOS sollten zu diesem Zweck den Systembrowser starten. Eingebettete WebViews sind nicht vertrauenswürdig, da eine Third-Party App nichts daran hindert, das Benutzerkennwort des Benutzers abzufragen. Die Benutzerauthentifizierung muss immer in einem vertrauenswürdigen Kontext erfolgen, der von der App (z. B. dem Browser) getrennt ist.

  3. Die Service App ist mit einem App Link zur Relying Party (Service Provider) Adresse beim Identity Provider registriert, zusammen mit einem selbst definierten URL Scheme der Service Provider App.

  4. Die E-ID App ist mit einem App Link zur Identity Provider Adresse registriert (https://eid.egiz.gv.at/idp/).

Antwortet ein Service Provider mit einem Signatur-Request für eine Autorisierung, erhält die Service App ein Security Layer Kommando und der E-ID Client führt die folgenden Schritte aus, um den Signaturerstellungsprozess abzuschließen.

  1. Intent von der Service App an die E-ID App:

    at.gv.oe.app://signature?returnUrl=at.gv.egiz.serviceapp://signature&slcommand=[…]

    • returnUrl ist eine für die Service-App registrierte URL

    • slcommand enthält den vom Service empfangenen Base64Url-codierten Security Layer-Befehl

  2. Die E-ID App leitet dann den Security Layer-Befehl an das VDA-Plugin weiter, das ihn ausführt.

  3. Intent von der E-ID App an die Service App:

    at.gv.egiz.serviceapp://signature?container=[…]

    • container enthält das Ergebnis des Befehls:

      {„success“:true,“url“:“[…]“,“method“:“get“,“reqParams“:{}}, eine URL, die die Service-App aufrufen soll

    • error ist ein optionaler Parameter, der eine Fehlerbeschreibung enthält (Änderungen vorbehalten).

E-ID App

Die E-ID App entspricht einer funktionalen Referenzimplementierung zur App „Digitales Amt“, welche die offizielle App zu „oesterreich.gv.at“ ist. Die nachfolgend beschriebenen Schnittstellen stehen bereits, oder werden zukünftig auf dieselbe Art und Weise in der App „Digitales Amt“ zu Verfügung stehen.

E-ID Service – Die E-ID App nutzt dieses Services, um IPC-Calls der Service App zu empfangen und basierend auf deren Inhalt, unterschiedliche Operationen (OIDC Authentifizierung, qualifizierte Signatur, …) durchzuführen. Je nach Anwendungsfall aktiviert dieses Service die entsprechenden Plugins in der E-ID App.

VDA-Plugin – Dieses Plugin implementiert die Kommunikation mit der, von der A-Trust zur Verfügung gestellten VDA-Komponente, die wiederum mit dem VDA kommuniziert und den Identifikations- und Authentifizierungsprozess von Benutzern zur Erstellung einer qualifizierten Signatur umsetzt.

OIDC-Plugin – Dieses Plugin implementiert die Kommunikation mit dem Identity Provider um eine Authentifizierung mittels OpenID Connect durchzuführen.

BINDING-Plugin – Das Binding Plugin wird für die Erstellung einer kryptographischen Bindung zwischen einem Binding-Service / Identity Provider, der E-ID App und dem Benutzer verwendet. Diese Bindung kann im zur Durchführung einer Client TLS Authentifizierung zur einfachen Identifikation und Authentifizierung des Benutzers verwendet werden.

Unter folgendem Link wird eine detaillierte Darstellung des Prozessflusses für OIDC Anmeldungen auf mobilen Geräten geboten:

Detaillierter Prozessfluss für Anmeldungen in Service Provider Apps ohne E-ID App

Detaillierter Prozessfluss für Anmeldungen in Service Provider Apps mit E-ID App