Das Identity Access Management (IAM) ist ein zentraler Bestandteil vieler Systeme. Selten kommt eine Anwendung ohne eine Anmeldung mit einer starken Mandantentrennung oder einem komplexen Gruppen- und Rollenkonzept aus. Das Open Source Produkt Keycloak stellt dafür eine umfassende Grundlage dar.
Die Einbettung und Verknüpfung unterschiedlicher Identity Provider ist ein wichtiger Faktor für die übergreifende Sicherheit. Anwendungen im Rahmen des deutschen Gesundheitswesen erfordern daher oft eine Anmeldung über den Authenticator der Gematik innerhalb der Telematikinfrastruktur (TI). Die Authentifizierung mittels Praxis- & Institutionsausweis (offizielle Bezeichnung: SMC-B) oder elektronischem Heilberufsausweis (eHBA) sind dabei typische Anforderungen.

Gematik-IDP Identity Provider Plugin
Um dies zu ermöglichen, wurde Keycloak um einen auf den zentralen Gematik-IDP spezialisierten Identity Provider erweitert. Zum zentralen Gematik-IDP später mehr.
Dieser in Kotlin geschriebene Identity Provider kommuniziert mit dem zentralen Gematik-IDP mithilfe des Gematik Authenticators über ein erweitertes OpenID Connect (OIDC) Protokoll. Ein Nutzer, der versucht, sich über die Keycloak-Anmeldeseite mit dem Gematik-IDP-Plugin anzumelden oder eine neue IDP-Verlinkung für seinen Account zu hinterlegen, wird automatisch auf den Authenticator weitergeleitet. Diese Weiterleitung geschieht über einen sogenannten Deep Link, der den externen Protokoll-Handler authenticator:// aufruft. Dieser Aufruf geschieht mit einem entsprechenden Challenge-Path und einer Redirect-URI, die auf den Result-Endpunkt des Gematik-IDP-Plugins zeigt.
Das OIDC Protokoll wurde dabei um den optionalen Parameter card_type erweitert, mit dem der abzufragende Kartentyp konfigurierbar ist. Dieser Parameter lässt sich über den oben genannten Challenge-Path konfigurieren.
Abgesehen davon kann die Auswahl des abzufragenden Kartentyps auch über den üblichen scope Parameter des OIDC Protokolls definiert werden. Dabei handelt es sich jedoch um einen veralteten Anmeldeprozess, der nur einzelne Kartenabfragen zulässt und so zu Problemen in modernen Browsern führt, die mehrere aufeinanderfolgende Aufrufe eines externen Protokoll-Handlers blockieren.
Im folgenden Schaubild ist der konkrete Authentifizierungsflow visualisiert, wie er auch in der Dokumentation des Plugins auf GitHub zu finden ist.

Der zentrale Gematik-IDP
Der zentrale Gematik-IDP kapselt in Verbindung mit dem Gematik Authenticator den Anmeldeprozess über das OpenID Connect (OIDC) Protokoll. Als Besonderheit kommt hier statt der üblichen elliptischen Kurven wie z.B. Curve25519 für die Verschlüsselung und Signierung der Kommunikation Brainpool zum Einsatz. Dieser Algorthitmus hat sich als Standard im deutschen Gesundheitswesen etabliert. Leider wird er seit Version 16 nicht mehr standardmäßig im JDK unterstützt. Daher war es notwendig, BouncyCastle als Crypto-Bibliothek einzubinden. Außerdem musste die verwendete JOSE-Bibliothek jose4j erweitert werden, damit diese auf die Brainpool-Kurven der Crypto-Bibliothek zugreifen kann.
Erfolgreiche Zusammenarbeit mit der gematik
Durch die enge Zusammenarbeit mit der gematik konnte das neue Gematik-IDP-Plugin im Herbst 2022 fertiggestellt werden. Damit konnten die Projekt-Anforderungen schnell erfüllt werden.
Seitdem wurde das Plugin mehrfach erweitert und parallel zum Gematik-Authenticator mit neuen Funktionen versehen. So wurden seit der initialen Fertigstellung mehrere neue Authentifizierungsprozesse eingebunden, die sowohl die gleichzeitige Abfrage von eHBA und SMC-B, als auch die Abfragen einzelner Kartentypen ermöglicht.
Seit Januar 2023 ist das Gematik-IDP-Plugin als erstes Projekt der Bundesdruckerei als Open Source Projekt in Github verfügbar und wird seitdem aktiv verwendet.
Seit Januar 2022 unterstützt neXenio die Bundesdruckerei bei der Weiterentwicklung und dem Betrieb einer eigenen IAM Lösung namens User Account.