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:
|
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:
Der Ablauf des Token-Tauschs erfolgt gemäß RFC 8693.
@startuml skinparam sequenceMessageAlign center autonumber participant "PVS" as pvs participant "gematik IDP" as gematikIdp participant "DEMIS IDP" as keycloak participant "DEMIS APIs" as demis pvs -> gematikIdp : Authentifizierung mittels SMC-B analog zu E-Rezept Flow gematikIdp -> pvs : gemIDP-Access-Token pvs -> keycloak : Übermittlung des gemIDP-Access-Token keycloak -> keycloak : Validierung des Tokens und Scopes keycloak -> pvs : Demis-Access Token pvs -> demis : Übermittlung der Meldung als FHIR-Bundle und Demis-Access Token an /$process-notification demis -> pvs: Meldungsquittung @enduml |
Ein Primärsystem (PS), welches ein DEMIS-Fachmodul integriert, kann die Zugriffsautorisierung auf die DEMIS-Schnittstelle erhalten.
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.
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
Informationen zur Registrierung eines Clients für die Nutzung des gematik IDPs finden sich in unter IDP-Dienst und Clientsysteme.