Zum Inhalt

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 und myoidc.
  • 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
  • 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
  • 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.