Beratung · Identity & Access Management

Wer darf was — und woher wissen wir das?

Identity & Access Management (IAM) entscheidet, ob Digitalisierung trägt oder im Alltag scheitert. Wir konzipieren und bauen IAM-Architekturen mit Keycloak — föderiert, auditierbar und integriert in die deutsche Verwaltungslandschaft inkl. BUND ID.

Warum IAM für Digitalisierung entscheidend ist

Jede Digitalisierung beginnt mit der Frage: Wer benutzt das System, und welche Rechte hat diese Person? Ohne saubere Antwort entstehen Schatten-IT, manuelle Freischalt-Prozesse, fehleranfällige Berechtigungsmatrizen — und im schlimmsten Fall Datenschutzvorfälle, die Projekte stoppen.

Identity & Access Management (IAM) ist die Schicht, die Identitäten verwaltet, authentifiziert und autorisiert — möglichst konsistent über alle Anwendungen hinweg. Ein gut gebautes IAM ist meist unsichtbar; fehlt es oder ist es schief gebaut, blockiert es Innovation auf Jahre.

Bei regulierten Branchen und im öffentlichen Sektor wird IAM zur Compliance-Frage. BaFin-Aufsicht, ISO 27001, DSGVO und das Onlinezugangsgesetz verlangen nachvollziehbare Zugriffsentscheidungen, Trennung von Pflichten und auditierbare Spuren.

Single Sign-On

Eine Anmeldung für alle Anwendungen — weniger Passwörter, weniger Helpdesk-Tickets, mehr Sicherheit.

Föderation

Externe Identitäten (Partner, Bürger, BUND ID) ohne doppelte Pflege akzeptieren.

Lifecycle-Management

Joiner/Mover/Leaver-Prozesse automatisiert: Zugriffe entstehen und enden mit dem Arbeitsverhältnis.

Auditierbarkeit

Wer hat wann auf was zugegriffen? Lückenlose Nachweise für Aufsicht und Innenrevision.

Standards & Protokolle, die Sie kennen sollten

IAM lebt von Standards. Drei sind unverzichtbar — und es lohnt zu wissen, wann welcher Standard das richtige Werkzeug ist.

SAML — der Klassiker für Enterprise-SSO

SAML 2.0 · seit 2005

Wann einsetzen?

Klassisches Enterprise-Umfeld, Browser-basierte Web-Anwendungen, Föderation zwischen Organisationen — z.B. Mitarbeiter-Login an einem SaaS-Portal über die Active-Directory-Föderation des Arbeitgebers.

Wie funktioniert es?

XML-basierter Austausch von signierten Assertions zwischen Identity Provider (IdP) und Service Provider (SP). Browser-Redirects mit POST-Bindings transportieren die Aussage „dieser Nutzer ist authentifiziert“.

Stärken

  • Reife · breite Enterprise-Verbreitung · ausgereifte Föderation · gut mit AD/AAD/Shibboleth/Keycloak

Schwächen

  • XML/SOAP-Komplexität · schwergewichtig für Mobile/SPA · weniger geeignet für API-zu-API-Aufrufe

OpenID Connect — der moderne Identitäts-Layer

OpenID Connect · seit 2014

Wann einsetzen?

Neuentwicklungen, mobile Apps, Single-Page-Apps, Bürgerportale, BUND-ID-Anbindung. Quasi-Standard für alles Neue.

Wie funktioniert es?

Schicht oben auf OAuth 2.0. Liefert ein signiertes ID-Token (JWT), das wer-ist-eingeloggt beantwortet, plus optional Access-Token für API-Zugriffe. JSON statt XML, kompakt, für Mobile geeignet.

Stärken

  • Schlank (JSON/JWT) · perfekt für Mobile & SPA · breite Bibliothek-Unterstützung · klar definierte Discovery via /.well-known

Schwächen

  • Token-Sicherheit verlangt Sorgfalt · weniger Föderationsdetails als SAML · Tooling im Enterprise-Umfeld noch jünger

OAuth 2.0 — Delegation, nicht Identität

OAuth 2.0 · seit 2012 (RFC 6749)

Wann einsetzen?

Wenn eine Anwendung im Namen eines Nutzers auf eine API zugreifen soll, ohne dessen Passwort zu kennen — z.B. „Diese App darf in meinem Namen Termine im Kalender erstellen“. OAuth 2.0 ist die Basis, auf der OIDC aufsetzt.

Wie funktioniert es?

Ein Authorization-Server stellt Access-Tokens aus, die der Client an einen Resource-Server schickt. Verschiedene Flows (Authorization Code mit PKCE, Client Credentials, Device Code) decken unterschiedliche Anwendungsfälle ab.

Stärken

  • Bewährter API-Schutz · feingranulare Scopes · Refresh-Token-Mechanismus · für M2M und User-to-API gleichermaßen

Schwächen

  • Wird häufig als Authentifizierung missbraucht — OAuth 2.0 ist ein Autorisierungsprotokoll, kein Login-Verfahren. Für Login: OIDC.

Weitere relevante Bausteine

SCIM (User-Provisioning zwischen Systemen) · FIDO2/WebAuthn (passwortlose, phishing-resistente Authentifizierung) · mTLS (gegenseitige Zertifikatsprüfung für vertrauliche M2M-Kommunikation) · JWT (kompaktes, signiertes Token-Format).

Tutorial: Keycloak als Open-Source-IAM aufsetzen

Keycloak ist der De-facto-Open-Source-Standard für IAM. Diese Anleitung führt Sie vom Container-Start bis zur produktiven Anbindung — bewusst kompakt, aber mit den Stellschrauben, die in Projekten wirklich relevant sind.

  1. Voraussetzungen

    Eine Linux-Maschine (oder macOS/WSL2) mit Docker oder Podman. Für Produktion: PostgreSQL als externe Datenbank, ein Reverse-Proxy mit TLS (z.B. nginx oder Traefik), und ein DNS-Eintrag für die Keycloak-URL.

  2. Keycloak im Container starten

    Für lokale Entwicklung reicht ein einzelner Container im dev-Modus. Achtung: dieser Modus ist nicht für Produktion gedacht.

    docker run -d --name keycloak \
      -p 8080:8080 \
      -e KEYCLOAK_ADMIN=admin \
      -e KEYCLOAK_ADMIN_PASSWORD=admin \
      quay.io/keycloak/keycloak:25.0.0 \
      start-dev
    
    # Anschließend: http://localhost:8080 → Administration Console
  3. Realm anlegen

    Ein Realm ist eine isolierte Mandanten-Einheit (eigene Nutzer, Clients und Rollen). Den Master-Realm nur für Admin-Aufgaben nutzen — alles Fachliche in einen eigenen Realm, z.B. „kommune-musterstadt“.

    # Über die UI: Top-Left → „Create Realm"
    # Oder per Admin-CLI:
    kcadm.sh config credentials --server http://localhost:8080 \
        --realm master --user admin --password admin
    kcadm.sh create realms -s realm=kommune-musterstadt -s enabled=true
  4. OIDC-Client für die Anwendung

    Jede angebundene Anwendung wird als „Client“ registriert. Für eine Web-App den Standard-Flow „Authorization Code mit PKCE“ wählen — sicher und für SPAs wie Server-Apps geeignet.

    {
      "clientId": "buergerportal",
      "protocol": "openid-connect",
      "publicClient": false,
      "standardFlowEnabled": true,
      "redirectUris": ["https://buergerportal.musterstadt.de/*"],
      "webOrigins":   ["https://buergerportal.musterstadt.de"],
      "attributes": {
        "pkce.code.challenge.method": "S256"
      }
    }
  5. Rollen und Gruppen

    Berechtigungen entlang fachlicher Rollen modellieren („sachbearbeiter", „leitung", „lesend"). Gruppen aggregieren Rollen und vereinfachen Joiner/Mover/Leaver — neue Mitarbeiter erben Zugriffe per Gruppenmitgliedschaft.

  6. Anwendung anbinden (Spring-Boot-Beispiel)

    Mit dem Spring-Security-OAuth2-Client genügt eine Konfiguration. Token-Validierung und Login-Redirect übernimmt das Framework.

    # application.yml
    spring:
      security:
        oauth2:
          client:
            registration:
              keycloak:
                client-id: buergerportal
                client-secret: ${KC_SECRET}
                scope: openid, profile, email
            provider:
              keycloak:
                issuer-uri: https://iam.musterstadt.de/realms/kommune-musterstadt
  7. Produktiv schalten — Hardening

    Für Produktion umstellen auf: PostgreSQL-Backend, externe TLS-Terminierung (Hostname und Proxy-Address-Forwarding setzen), Hochverfügbarkeit per Cluster, Brute-Force-Schutz aktivieren, Passwort-Policy, MFA über TOTP oder WebAuthn, regelmäßige Backups und Monitoring auf Anmelde-Anomalien.

    kc.sh start \
      --hostname=iam.musterstadt.de \
      --proxy-headers=xforwarded \
      --http-enabled=true \
      --db=postgres \
      --db-url=jdbc:postgresql://db:5432/keycloak \
      --db-username=keycloak \
      --db-password=${DB_PASSWORD}
    
    # Plus: Brute-Force-Detection in Realm-Settings → Security Defenses
Praxis-Hinweis

Realm-Konfiguration als Code pflegen (Export/Import via kcadm oder Terraform-Provider) — sonst driften Stages auseinander, und Audits werden schmerzhaft.

BUND ID — die föderale Bürgeridentität

Die BUND ID ist das zentrale, sektorenübergreifende Nutzerkonto für Online-Verwaltungsleistungen in Deutschland. Für Kommunen, die OZG-Leistungen anbieten, ist sie kein Add-on, sondern die erwartete Eintrittstür.

Hinter der BUND ID steht ein föderaler Identity Provider, der Bürger:innen über mehrere Vertrauensniveaus authentifiziert — von einfachem Benutzername/Passwort bis hin zur Online-Ausweis-Funktion (eID) des Personalausweises. Kommunen integrieren die BUND ID per SAML oder OIDC; die Authentifizierung passiert beim föderalen IdP, das Ergebnis wird signiert an das Fachverfahren übergeben.

Vertrauensniveaus richten sich nach eIDAS: niedrig (Benutzerkonto), substanziell (ELSTER-Zertifikat) und hoch (eID/Online-Ausweis). Welches Niveau eine Leistung verlangt, bestimmt die Fachlichkeit — ein Mängelmelder reicht mit „niedrig", ein Bauantrag verlangt „hoch".

Für die Implementierung empfehlen wir: BUND ID als externen Identity Provider in Keycloak einbinden (Identity Brokering), das Niveau aus den Claims auslesen und im eigenen System als Attribut speichern. So bleibt das Fachverfahren entkoppelt — und ein späterer Wechsel der Bürgeridentität (z.B. EUDI-Wallet) wird ohne Code-Änderung möglich.

Wer betreibt sie?

Bundesministerium des Innern und für Heimat (BMI), umgesetzt durch das Bundesministerium des Innern in Kooperation mit dem ITZBund.

Welche Vertrauensniveaus?

Niedrig (Benutzerkonto), substanziell (ELSTER), hoch (eID via Personalausweis). Bald ergänzt durch die EUDI-Wallet.

Welche Schnittstelle?

SAML 2.0 und OpenID Connect. Anbindung über das Servicekonto-Anmeldeverfahren des Bundes.

Was ist zu beachten?

Datensparsamkeit (nur erforderliche Attribute anfragen), explizite Einwilligung der Bürger:innen, sichere Speicherung des Vertrauensniveaus für Audit-Zwecke.

IAM-Workshop oder Architektur-Review?

In zwei Tagen erarbeiten wir gemeinsam mit Ihrem Team eine fundierte Einschätzung Ihrer IAM-Architektur — und, falls Handlungsbedarf besteht, einen klaren Maßnahmenplan.

Gespräch vereinbaren