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:

  • 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

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:

Der Ablauf des Token-Tauschs erfolgt gemäß RFC 8693.



Detaillierte Ablaufbeschreibung des Token-Tausch-Mechanismus

Übersicht

@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

Ablauf

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.

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:

ParameterBedeutungInhalt
client_idID des Clients, der den Token-Tausch durchführen möchteWird von DEMIS zugeteilt
client_secretSecret des ClientsWird von DEMIS zugeteilt
grant_typeDer String urn:ietf:params:oauth:grant-type:token-exchange URL-encodiertfester Wert
subject_issuerDer im Access-Token des gematik IDP eingetragene Issuer"claim: iss" aus Access-Token des gematik IDP
subject_tokenDas Access-Token des gematik IDPErhaltenes Access-Token des gematik IDP
subject_token_typeDer String urn:ietf:params:oauth:token-type:access_token URL-encodiertfester 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.