LML7 - LDAP - SSO via Keycloak SAML / OIDC für Greenlight, Nextcloud, Moodle, Dokuwiki, Bookstack

Hallo @Tobi,

vielen Dank für Deine herausragende Arbeit und v.a. extrem wertvolle Dokumentation derselben! Das ist mal wieder echt ein Highlight in diesem Forum!

Ich hatte keycloak auch vor längerer Zeit schon mal „angespielt“, war dann aber irgendwo in der zunächst doch recht unübersichtlichen Welt „verkommen“. Deine Posts habe ich jetzt zum Anlass genommen, dieses überaus sinnvolle und hilfreiche Thema mal wieder zu verfolgen und habe auch Dank Deiner Doku die erste Applikation (Bookstack) an Keycloak angebunden!

Da ich bisher keinen BBB-Server betreibe und wg. der Infos im Nachbarthread jetzt noch auf v3.0 warte (und obendrein gern meine Applikationen getrennt mag), habe ich mich für einen separaten keycloak als Docker entschieden.

Wer das auch machen möchte (und als Doku für mich), hier mein docker-compose (alles in <> ist zu ersetzen):

services:
  keycloak_web:
    image: quay.io/keycloak/keycloak:latest
    container_name: keycloak_web
    environment:
      KC_DB: postgres
      KC_DB_URL: jdbc:postgresql://keycloakdb:5432/keycloak
      KC_DB_USERNAME: keycloak
      KC_DB_PASSWORD: <geheim>

      KC_HOSTNAME: <deine_keycloak_url>
      KC_HOSTNAME_PORT: 8080
      KC_HOSTNAME_STRICT: false
      KC_HOSTNAME_STRICT_HTTPS: false
      KC_HTTP_ENABLED: true
      KC_PROXY_HEADERS: xforwarded
      KC_PROXY_ADDRESS_FORWARDING: true

      KC_LOG_LEVEL: info
      KC_METRICS_ENABLED: true
      KC_HEALTH_ENABLED: true
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: <geheim>
    command: start-dev
    depends_on:
      - keycloakdb
    ports:
      - 8081:8080

  keycloakdb:
    image: postgres:15
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: <geheim>

volumes:
  postgres_data:

Mein keycloak-Docker steht dabei hinter einem Reverse Proxy (Nginx Proxy Manager - ebenfalls ein Docker), dem man unter „Advanced“ noch folgendes mitgeben muss:

proxy_set_header X-Forwarded-For $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;

Vielen Dank nochmal!
Jens

1 „Gefällt mir“