Clients und Identity Provider konfigurieren
Ziel
In dieser Aufgabe konfigurieren Sie Ihre Keycloak-Instanz so, dass drei Realms angelegt werden: login, saml und oidc. Im Realm login soll der Login über Identity Provider erfolgen, die entweder auf den Realm saml (SAML) oder auf den Realm oidc (OpenID Connect) verweisen. Dadurch lernen Sie, wie Clients und Identity Provider eingerichtet werden, um einen zentralen Login-Mechanismus zu realisieren.
Hilfsmittel
- Versuchen Sie, die unten stehenden Aufgaben mit Hilfe der Folien eigenständig zu lösen.
- Sollten Sie dabei Probleme haben, finden Sie bei jeder Aufgabe einen ausklappbaren Block, in dem der Lösungsweg beschrieben wird.
Vorbereitung
Starten Sie eine Keycloak-Instanz, falls nicht bereits eine läuft.
Docker-compose-Datei
- Erstellen Sie eine Datei
docker-compose.yml
services: postgres: image: postgres environment: POSTGRES_USER: keycloak POSTGRES_PASSWORD: secret POSTGRES_DB: keycloak keycloak: image: quay.io/keycloak/keycloak:latest environment: KC_BOOTSTRAP_ADMIN_USERNAME: admin KC_BOOTSTRAP_ADMIN_PASSWORD: admin KC_DB: postgres KC_DB_URL_HOST: postgres KC_DB_USERNAME: keycloak KC_DB_PASSWORD: secret command: - start-dev - "--hostname=https://keycloak.code-{ZAHL}.labs.corewire.de" - "--proxy-headers=xforwarded" depends_on: [ "postgres" ] labels: - "traefik.enable=true" - "traefik.http.routers.keycloak.rule=Host(`keycloak.code-{ZAHL}.labs.corewire.de`)" - "traefik.http.services.keycloak.loadbalancer.server.port=8080" networks: - default - proxy networks: proxy: external: true
- Ersetzen Sie
{ZAHL}
- Starten Sie die Keycloak-Instanz mit
docker-compose up -d
- Warten Sie kurz. Nach spätestens 30 Sekunden sollte Sie unter folgendem Link ereichbar sein
https://keycloak.code-{ZAHL}.labs.corewire.de
Aufgabe 1 - Drei Realms anlegen
- Legen Sie in der Keycloak-Admin-Konsole drei Realms an:
- mylogin
- mysaml
- myoidc
- Stellen Sie sicher, dass alle Realms aktiviert sind.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Öffnen Sie in der Keycloak-Admin-Konsole den Realm-Auswahl-Dialog.
- Erstellen Sie nacheinander die Realms mit den Namen
mylogin
,mysaml
undmyoidc
. - Wählen Sie nach Erstellung den jeweiligen Realm aus, um zu überprüfen, dass er aktiv ist.
Aufgabe 2 - SAML Identity Provider
2.1: SAML Identity Provider anlegen
- Wechseln Sie in den Realm mylogin.
- Navigieren Sie im Menü zu Identity Providers und wählen Sie SAML v2.0 als Provider-Typ aus.
- Füllen Sie die folgenden Felder aus:
- Alias:
saml-idp
- Display name: Login via SAML
- SAML entity descriptor:
https://keycloak.code-{ZAHL}.labs.corewire.de/realms/mysaml/protocol/saml/descriptor
- Alias:
- Speichern Sie die Konfiguration
- Sie landen auf der Detail-Seite des Idenity Proviers. Öffnen Sie den Link unter Endpoints und speichern Sie sich die
descriptor.xml
lokal.
2.2: Client im Realm mysaml für den SAML-Login erstellen
- Wechseln Sie in den Realm mysaml.
- Erstellen Sie einen SAML-Client für den eben erstellten Identity Provider
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Erstellen Sie im Realm
mysaml
im Menü-Punkt Clients einen neuen Client über Import Client. - Wählen Sie die
decriptor.xml
aus und speichern Sie
2.3: SAML Login testen
- Erstellen Sie einen User
mysamluser
mit Passwort im Realm mysaml - Öffnen Sie im Browser die Account-Login-Seite des Realms mylogin.
- Loggen Sie sich über
Login via SAML
und den eben erstellen Nutzer ein.
Aufgabe 3 - OIDC Identity Provider
3.1: Client im Realm myoidc für den OIDC-Login erstellen
- Erstellen Sie im Realm myoidc einen neuen OIDC-Client:
- Gehen Sie zu Clients und klicken Sie auf Create.
- Geben Sie als Client ID beispielsweise
oidc-idp-client
ein. - Aktivieren Sie auf der nächsten Seite Client Authentication
- Geben Sie als Root URL
https://keycloak.code-{ZAHL}.labs.corewire.de/realms/mylogin
an - Speichern Sie den Client.
- Speichern Sie sich Client ID und Client Secret
3.2: OIDC Identity Provider anlegen
- Wechseln Sie in den Realm mylogin.
- Navigieren Sie im Menü zu Identity Providers.
- Klicken Sie auf Add provider und wählen Sie OpenID Connect v1.0 als Provider-Typ aus.
- Füllen Sie die folgenden Felder aus:
- Alias:
oidc-idp
- Display Name:
Login via OIDC
- Discovery Endpoint:
https://keycloak.code-{ZAHL}.labs.corewire.de/realms/myoidc/.well-known/openid-configuration
- CLient Id und Client Secret
- Alias:
- Speichern Sie die Konfiguration.
3.3: OIDC Login testen
- Erstellen Sie einen User
myoidcuser
mit Passwort im Realm myoidc - Öffnen Sie die Account-Login-Seite des Realms mylogin im Browser.
- Loggen Sie sich über
Login via OIDC
und den eben erstellen Nutzer ein.