OpenID Connect & SAML

Siehe auch

OpenID Connect (OIDC)

OpenID Connect (OIDC) ist ein Authentifizierungsprotokoll und eine Erweiterung zu OAuth 2.0. Während OAuth 2.0 ein unvollständiges Framework zum Erstellen von Autorisierungsprotokollen ist, ist OIDC ein vollwertiges Authentifizierungs- und Autorisierungsprotokoll. OIDC nutzt unter anderem die JSON Web Token (JWT) Standards, welche Identity Token sowie deren Signierung und Verschlüsselung definieren.

OIDC kommt hauptsächlich auf zwei Arten zum Einsatz:

  1. Der Keycloak-Server wird aufgefordert, einen Benutzer zu authentifizieren. Nach einer erfolgreichen Anmeldung erhält die Anwendung ein Identity Token und ein Access Token.

  2. Ein Programm wünscht Zugriff auf Remotedienste und fordert Keycloak auf, ein Access Token auszustellen, mit dem es im Namen des Benutzers Remotedienste aufrufen kann. Keycloak authentifiziert den Benutzer und bittet um Zustimmung, dem Programm Zugriff zu gewähren. Das Programm erhält das Access Token, welches anschliessend vom Realm digital signiert wird. Mit diesem Access Token kann das Programm beispielsweise REST-Aufrufe ausführen. Der REST-Service extrahiert das Access Token, überprüft die Signatur des Tokens und entscheidet dann basierend auf den Zugriffsinformationen innerhalb des Tokens, ob die Anforderung verarbeitet werden soll oder nicht.

Hinweis

  • Ein Identity Token (Identitätstoken) enthält Informationen über den Benutzer wie Benutzername, E-Mail und andere Profilinformationen.

  • Ein Access Token (Zugriffstoken) wird vom Realm digital signiert und enthält Zugriffsinformationen (z. B. Rolle des Benutzers), anhand derer die Anwendung bestimmen kann, auf welche Ressourcen der Benutzer in der Anwendung zugreifen darf.

SAML 2.0

SAML 2.0 ist ähnlich wie OIDC, jedoch viel älter. Es hat seine Wurzeln in SOAP und der Fülle an WS-Spezifikationen, so dass es tendenziell ausführlicher ist als OIDC. SAML 2.0 ist in erster Linie ein Authentifizierungsprotokoll, bei dem XML-Dokumente zwischen dem Authentifizierungsserver und der Anwendung ausgetauscht werden. Signaturen und Verschlüsselung werden verwendet, um Requests und deren Antworten zu prüfen.

SAML kommt in Keycloak hauptsächlich für Browseranwendungen und REST-Aufrufe zum Einsatz:

  1. Eine Anwendung fordert den Keycloak-Server auf, einen Benutzer für zu authentifizieren. Nach einer erfolgreichen Anmeldung erhält die Anwendung ein XML-Dokument mit einer SAML-Assertion, die verschiedene Attribute über den Benutzer enthält. Dieses XML-Dokument ist vom Realm digital signiert und enthält Zugriffsinformationen (z. B. Rolle des Benutzers), anhand derer die Anwendung bestimmen kann, auf welche Ressourcen der Benutzer in der Anwendung zugreifen darf.

  2. Ein Programm wünscht Zugriff auf Remotedienste und fordert Keycloak auf, eine SAML-Assertion auszustellen, mit der es im Namen des Benutzers andere Remotedienste aufrufen kann.

OpenID Connect vs. SAML

  • Keycloak empfiehlt die Verwendung von OIDC.

  • OIDC ist moderner als SAML, SAML dagegen ist ausführlicher als OIDC und bietet mehr Funktionen.

  • OIDC ist für das Web entwickelt worden und eignet sich besser für HTML5 / JavaScript-Anwendungen, da es auf der Clientseite einfacher zu implementieren ist. Da Token im JSON-Format vorliegen, können sie von JavaScript leichter verwendet werden. SAMLs Webfähigkeit wurde nachgerüstet.

Built on 2022-06-03