Zusammenfassung
Dieses Verfahren steht allen DEMIS Meldern und Empfängern zur Verfügung, die an die Telematik Infrastruktur angebunden sind und damit eine SMC-B besitzen. Das Verfahren ist dabei in zwei Schritte unterteilt:
Hintergrund
DEMIS ermöglicht das Senden von Meldungen via Meldeportal über den Browser, sowie über eine Schnittstelle, welche die Integration in Primärsysteme erlaubt. Diese Integration in Primärsysteme erspart Nutzenden die manuelle Eingabe von Daten und kann somit das Senden von Meldungen deutlich vereinfachen. Aktuell können Primärsysteme die DEMIS-Schnittstelle nutzen, indem sie sich von der RKI-Geschäftsstelle ein Zertifikat ausstellen lassen und dieses zur Authentisierung gegenüber DEMIS verwenden. Zukünftig soll ein Mechanismus angeboten werden, der es Primärsystemen erlaubt, eine Authentisierung für die Schnittstelle zu erhalten, ohne zuvor administrative Prozesse zu durchlaufen. Dies soll erreicht werden, indem Institutionen der TI ihre SMC-B nutzen, um sich gegenüber dem gematik IDP zu authentisieren. Für Anwendungen wie beispielsweise E-Rezept, haben Primärsysteme diese Anmelde-Methode bereits umgesetzt. Die Implementierung sollen Primärsysteme nachnutzen können, um sich gegenüber dem DEMIS IDP zu authentisieren. Das Verfahren ist dabei in zwei Schritte unterteilt:
- Anmeldung am gematik IDP mittels SMC-B und Erhalt eines Access Tokens
- Tausch des Access Tokens vom gematik IDP gegen ein Access Token vom DEMIS IDP
Der Ablauf des Token-Tauschs erfolgt gemäß RFC 8693.
Detaillierte Ablaufbeschreibung des Token-Tausch-Mechanismus
Übersicht
Ablauf
Ein Primärsystem (PS), welches ein DEMIS-Fachmodul integriert, kann die Zugriffsautorisierung auf die DEMIS-Schnittstelle erhalten.
- Dazu erstellt das DEMIS-Fachmodul eine Authorization Request mit dem scope="gmtik-demis" und der clientd_id des PVS und sendet diesen über das integrierte Authenticator-Modul an den IDP-Dienst.
- Im Challenge-Response Verfahren wird die SMC-B des PS durch den IDP-Dienst geprüft und, nach erfolgreicher Prüfung, ein Authorization Code ausgestellt und über das Authenticator-Modul an das DEMIS-Fachmodul propagiert.
- Das DEMIS-Fachmodul erzeugt einen symmetrischen Schlüssel (Token Key) und reicht diesen zusammen mit dem Authorization Code am Token-Endpunkt des IDP-Dienstes ein.
- Der IDP-Dienst erstellt ein ID-Token und ein Acces-Token, verschlüsselt das Access-Token mit dem Token Key und gibt ID-Token und verschlüsseltes Access-Token an das DEMIS-Fachmodul zurück.
- Das DEMIS-Fachmodul entschlüsselt den Access-Token und reicht diesen beim DEMIS-IDP zum Tausch gegen ein DEMIS-Access-Token ein (Token Exchange).
- Der DEMIS-IDP prüft das Access-Token wie folgt:
- Gültigkeit der Token Signatur
- Zeitliche Gültigkeit
- Scope des Tokens
- Nach erfolgreicher Prüfung sendet der DEMIS-IDP insbesondere ein Access-Token, sowie ein Refresh Token an den Client zurück.
- Das DEMIS-Fachmodul kann mit dem DEMIS-Access-Token auf den DEMIS-Fachdienst zugreifen. Das Refresh Token kann genutzt werden, um die Session mit dem DEMIS-IDP offen zu halten.
Eine detaillierte Beschreibung, wie Clients sich für das E-Rezept gegenüber dem gematik IDP authentisieren findet sich unter https://github.com/gematik/api-erp/blob/master/docs/authentisieren.adoc#als-nutzer-der-telematikinfrastruktur-authentifiziert-werden.
Tauschen des Tokens des gematik IDP gegen ein Token des DEMIS IDP
Nachdem ein Access-Token des gematik IDP erhalten wurde, kann dieses mittels HTTP-Post an den DEMIS IDP gegen ein DEMIS-Access-Token getauscht werden. Der dazu notwendige POST-Request sieht etwa wie folgt aus:
POST /realms/INSTITUTIONS-TI/protocol/openid-connect/token HTTP/1.1
Host: auth.demis.rki.de
Content-Type: application/x-www-form-urlencoded
Content-Length: <calculated length>
client_id=<client-id>&client_secret=<client-secret>&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&subject_issuer=<subject-issuer>&subject_token=<gematik_idp_access_token>&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token
Erklärung der Request-Parameter:
Parameter | Bedeutung | Inhalt |
---|---|---|
client_id | ID des Clients, der den Token-Tausch durchführen möchte | Wird von DEMIS zugeteilt |
client_secret | Secret des Clients | Wird von DEMIS zugeteilt |
grant_type | Der String urn:ietf:params:oauth:grant-type:token-exchange URL-encodiert | fester Wert |
subject_issuer | Der im Access-Token des gematik IDP eingetragene Issuer | "claim: iss" aus Access-Token des gematik IDP |
subject_token | Das Access-Token des gematik IDP | Erhaltenes Access-Token des gematik IDP |
subject_token_type | Der String urn:ietf:params:oauth:token-type:access_token URL-encodiert | fester Wert |
Via curl kann der Request wie folgt abgesetzt werden:
curl -X POST -d "client_id=<client-id>" \
-d "client_secret=<client-secret>" \
--data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
-d "subject_issuer=<subject-issuer>" \
-d "subject_token=<gematik-idp-access-token>" \
--data-urlencode "subject_token_type=urn:ietf:params:oauth:token-type:access_token" \
https://auth.demis.rki.de/realms/INSTITUTIONS-TI/protocol/openid-connect/token
Registrierung neuer Clients für die Nutzung des gematik IDP
Informationen zur Registrierung eines Clients für die Nutzung des gematik IDPs finden sich in unter IDP-Dienst und Clientsysteme.