This is an old revision of the document!
Table of Contents
Keycloak
Bei Keycloak handelt es sich um ein open-source IdentitĂ€ts- und Zugriffsverwaltungssystem, dass es vereinfachen soll Applikationen und Dienste zu sichern. Dabei implementiert es wichtige Standards wie OpenID Connect und SAML. Im Rahmen dieser Arbeit ist lediglich OpenID Connect relevant. Auch ermöglicht Keycloak es Logins von anderen Plattformen wie GitHub oder Twitter zu implementieren. AuĂerdem kann Keycloak sich auch mit beispielsweise einem Active Directory verbinden, welches oftmals in Firmen eingesetzt wird, um die Nutzer-Daten mit diesem zu teilen. Ein weiteres wichtiges Feature ist die BedienoberflĂ€che. (Keycloak.org, o.J.)
OAuth und OpenID Connect
Die UnterstĂŒtzung von OAuth 2.0 in Keycloak stellt eines der wichtigsten Features da. Spasovski beschreibt OAuth 2.0 wie eine schĂŒtzende Schicht fĂŒr einen Dienst, sodass die Nutzer-Applikation eine Methode hat, um an geschĂŒtze Daten zu gelangen. OAuth 2.0 (voller Titel: âThe OAuth 2.0 Authorization Frameworkâ) ist eine Spezifikation eines Protokolls zur Sicherung von Diensten, wobei die Spezifikation Freiraum fĂŒr verschiedene Implementierung offen hĂ€lt. Der hĂ€ufigste Anwendungsfall fĂŒr OAuth 2.0 sind der Schutz von RESTful APIs und webbasierten Applikationen. (Spasovski, 2013)
GrundfunktionalitÀt
Die GrundfunktionalitĂ€t lĂ€sst sich kurz zusammenfassen: Möchte eine Applikation auf geschĂŒtzte Daten zugreifen, macht diese sogenannte HTTP Anfragen an einen Server. Dabei wird ein Zugriffstoken mitgeliefert. Dieser Token enthĂ€lt Informationen, welcher Nutzer der Applikation gestattet auf die Daten zuzugreifen. In Abbildung SPASOVSKI_OAUTH wird ein Beispiel einer Authentifizierung gezeigt. ZunĂ€chst fragt die Nutzerapplikation den Zugriff auf die geschĂŒtze Ressource an. Wird dies gestattet erhĂ€lt der Nutzer ein âAuthorization grantâ. Dies enthĂ€lt dann Informationen ĂŒber die Authentifizierung. Folgend gibt die Nutzerapplikation den âAuthorization grantâ weiter an den Authentifizierungsserver. Dieser ĂŒberprĂŒft den âAuthorization grantâ und gibt bei BestĂ€tigung einen âAccess Tokenâ aus. Dieser spezielle Token ist mit dem Nutzer verbunden und kann dafĂŒr genutzt werden auf eine geschĂŒtzte Ressource zuzugreifen. Der Token besteht mindestens aus dem Token an sich und einer Zeitangabe wie lange der Token gĂŒltig ist. Hat die Nutzerapplikation den Token erhalten, kann sie die gewĂŒnschte geschĂŒtzte Ressource bei dem Server anfragen. Bei der Anfrage wird der Token mitgeschickt. Der Server mit der angefragten Ressource ĂŒberprĂŒft den Token dann und sendet bei BestĂ€tigung die angefragten Ressource zurĂŒck. (Spasovski, 2013)
OpenID Connect (OIDC) ist eine weitere Ebene, welche direkt auf OAuth 2.0 aufbaut. So erweitert OIDC OAuth 2.0 hauptsĂ€chlich um zwei wichtige Features. Zum einen ermöglicht es Applikationen die IdentitĂ€t von Endnutzern zu bestĂ€tigen, und zum anderen besteht auch die Möglichkeit einfache Profil-Informationen des Endnutzers zuerhalten. Zur DatenĂŒbertragung werden JSON Web Token verwendet, diese enthalten alle Informationen. (Sakimura et al., 2014)
Weitere Features
OAuth 2.0 und damit auch OIDC enthalten weitere wichtige Features. So ist es fĂŒr einen Nutzer möglich einem weiteren Dienst einen âAccess Tokenâ zu geben. Spasovski beschreibt dies wie folgt. Der Nutzer könnte sich auf einer Fotowebseite anmelden, auf welcher er Bilder mit anderen Nutzern teilen kann. Gleichzeitig ist er auch auf einer Webseite angemeldet, auf welcher Bilder drucken lassen kann. UnterstĂŒtzen beide Webseiten nun OAuth 2.0 und haben eine entsprechende Schnittstelle um Daten auszutauschen, so kann der Nutzer dem Druckdienst einen âAccess Tokenâ geben, um auf seine Bilder bei dem anderen Foto-Teil-Dienst zuzugreifen. Dieser Ablauf wird âAuthorization Delegationâ genannt. Der Zugriff kann natĂŒrlich auch Widerrufen werden. Ein weiteres wichtiges Feature ist das Verbinden von mehreren unterschiedlichen Dienste, genannt âFederated Identityâ Der Nutzer registriert sich bei Webseite A. Wenn er sich nun auf einer anderen Webseite B registrieren will, kann er sich mit seinem Konto von Webseite A dort direkt anmelden, ohne dass Webseite B einen Nutzernamen oder Passwort von ihm erhalten hĂ€tte. Webseite A wĂŒrden in diesem Fall als âIdentity Providerâ agieren. Bekannte Beispiele fĂŒr solche Provider sind Google und Facebook. (Spasovski, 2013)
Implementierung in Keycloak
Keycloak ĂŒbernimmt im OAuth 2.0-Authentifizierungsablauf gleich zwei wichtige Rollen. So fungiert es gleichzeitig als Resource Owner und Authorization Server (vgl. Abbildung SPASOVSKI_OAUTH). In manchen FĂ€llen kann Keycloak sogar der Resource Server sein, da es auch Funktionen bietet, wie die Admin Konsole, ĂŒber welche Keycloak konfiguriert werden kann. (Hartenstein, 2018, S.4) In Keycloak können mehrere Resource Server angegeben und konfiguriert werden. Sie werden Clients genannt. (Keycloak.org, 2021) Bei solch einem Client kann es sich um jedwede Art von Dienst handeln. Beispielsweise eine Web-, Desktop- oder Mobilapplikation (Spasovski, 2013). Durch die Admin Konsole und die Account Management Konsole kann Keycloak sehr schnell und einfach eingerichtet und genutzt werden (Keycloak.org, o.J.). Die Admin Konsole erlaubt es dabei Clienten und Rollen anzulegen, aber integriert auch gleichzeitig eine komplette Nutzerverwaltung. Auch die Verbindungen zu anderen OAuth 2.0 Diensten lassen sich konfigurieren (Siehe KAPITEL WEITERE FEATURES). Mit der Account Management Konsole bietet Keycloak auch die Möglichkeit fĂŒr den Endnutzer seine Nutzerdaten zuĂ€ndern oder weitere SicherheitsmaĂnahmen hinzuzufĂŒgen.