GEDOPLAN
Application ServerJakarta EE (Java EE)

Wildfly SSO mit Keycloak (SAML,Oauth)

Application ServerJakarta EE (Java EE)
keycloak ablau1

Eine Softwarelandschaft mit mehreren Anwendungen steht häufig vor dem Problem das eine mehrfache Anmeldung an den einzelnen Anwendungen unnötigerweise durchgeführt werden muss obwohl die Authentifizierungs-Mechanismen identisch sind. Seit Wildfly 8.1 gibt es die Möglichkeit auf einfachem Wege ein Single Sign On zu aktivieren. Was aber wenn die Anwendungen auf unterschiedlichen Servern betrieben werden oder der Funktionsumfang der Benutzerverwaltung des Application Servers nicht ausreicht? Keycloak!

Einfaches SSO dank Wildfly 8.1

Seit Wildfly 8.1 ist die Aktivierung des SSO für Anwendungen die auf demselben Application Server sehr einfach. Hier reicht es aus die Server-Konfiguration um die entsprechende Option zu erweitern:

<subsystem xmlns="urn:jboss:domain:undertow:3.0>
    ...
    <server name="default-server>
       ...
        <host name="default-host" alias="localhost>
            ...
            <single-sign-on path="/"/>
        </host>
    </server>

Darf es mehr sein? Keycloak!

Keycloak ist eine Single Sign On Lösung für Webanwendungen, REST-Services und Logins über Drittanbieter (Social Login, wie Facebook, Google etc.). Das Framework bietet zudem ein Identitäts Management (IdM) und ersetzt damit die JAAS Implementierung der Application Server. Benutzer, Rollen und Gruppen werden dann nicht mehr im Application Server gepflegt sondern über eine separate UI die von Keycloak bereitgestellt wird. Das eigentliche Protokoll zur Authentifizierung ist pro Anwendung Konfigurierbar und bietet die Möglichkeit von openid-connect (OAuth basiert) oder SAML.

KeyCloak_Ablau

Konfiguration

Der Betrieb des Keycloak Servers kann entweder als Deployment auf einem bestehenden Application Server erfolgen oder mittels Standalone Version die einen eigenen vorkonfigurierten Wildfly Application Server mitbringt.

Unter Verwendung der Admin UI die der Keycloak Server bereit stellt können die entsprechenden Konfigurationen vorgenommen werden. Neben der Definition der Benutzer und Rollen werden im Bereich „Clients“ die einzelnen Anwendungen definiert die über diesen Server verwaltet werden sollen. Die Anlage eines solchen Clients erfolgt im einfachsten Fall unter der Eingabe einer ID (intern), Client Protocol (SAML, openid-connect) und einer gültigen Weiterleitungs-URL die nach dem Login aufgerufen werden darf

KeyCloak_ui.PNG

Innerhalb unseren Anwendungen wird nun ein Keycloak-Spezifischer Authentifizierungs Mechanismus aktiviert (innerhalb der web.xml, anstatt z.B. BASIC oder FORM). Um dies zu erlauben benötigt der Server die entsprechende Implementierung:

Download: http://keycloak.jboss.org/downloads.html?dir=0%3Dadapters%3B

Dieses Archiv enthält das entsprechende „module“ das in das Root Verzeichnis des Application Servers entpackt werden muss.

Anschließen muss dieses Modul noch aktiviert werden:

standalone.xml

<server xmlns="urn:jboss:domain:4.0>

<extensions>
    ...
    <extension module="org.keycloak.keycloak-adapter-subsystem"/>
</extensions>
...
 <profile>
    <subsystem xmlns="urn:jboss:domain:keycloak:1.1"/>
    ...

In der web.xml deklarieren wir als Authentifizierung Mechanismus nun „KEYCLOAK“

web.xml

<login-config>
    <auth-method>KEYCLOAK</auth-method>
    <realm-name>Master</realm-name>
</login-config>

Zusätzlich dazu benötigt die Anwendung noch die entsprechenden Informationen zum KeyCloak Server. Diese können entweder zentral in die standalone.xml eingetragen werden oder in einer separaten „keycloak.json“ Datei innerhalb der Anwendung (/WEB-INF). Die konkreten Einträge lassen sich für beide Versionen aus der Admin UI von KeyCloak generieren (im angelegten „Client“ unter „Installation“).

Das genügt bereits um die Benutzer, Rechte, Rollen und Zusatzinformationen zentral zu Pflegen und allen Anwendungen zur Authentifizierung zur Verfügung zu stellen. Neben des SSO Authentifizierungs-Mechanismus bietet KeyCloak damit auch bereits die entsprechenden Login-, und Registrierungs-Prozesse und Admin-Funktionalitäten wie Session Monitoring etc. Weitere Details zu den Möglichkeiten bietet die Doku: http://keycloak.jboss.org/docs

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

blockchain 8244279 640 jpg
zero

Angular, Directive Composition

Direktiven sind ein mächtiges Werkzeug bei der Entwicklung mit Angular, um diverse Problemstellungen generisch und wiederverwendbar zu implementieren. Ein Feature,…
IT-Training - GEDOPLAN
Webprogrammierung

Angular 5 Konverter

Ein sehr häufig vorkommendes Szenario bei der Arbeit mit Fomularen ist die Umwandlung von Werten, also die Konvertierung zwischen Formular-…
IT-Training - GEDOPLAN
Jakarta EE (Java EE), Spring

Rest – HATEOAS + HAL

REST-Webservices sind wohl die am weitesten verbreitete Schnittstellentechnologie die im WEB zu finden ist. Dank JSON als Datenformat bietet REST…

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!