Zum Hauptinhalt springen

OAuth2 und OIDC

Das System verwendet OpenID Connect (OIDC) für Authentifizierung und OAuth2 für Autorisierung. Keycloak ist der zentrale Identity Provider. Alle Komponenten, die auf gesicherte Ressourcen zugreifen, interagieren über dieses Protokoll.

Begriffe

OAuth2 ist ein Autorisierungsframework: Es legt fest, wie ein Client im Namen eines Nutzers Zugriff auf Ressourcen erhält, ohne dessen Passwort zu kennen. Das Ergebnis ist ein Access Token.

OpenID Connect baut auf OAuth2 auf und ergänzt Authentifizierung: Der Client erhält zusätzlich ein ID Token, das Informationen über die eingeloggte Person enthält (Name, E-Mail, Rollen).

Tokens

TokenFormatVerwendung
Access TokenJWTWird bei jedem API-Aufruf als Authorization: Bearer mitgeschickt
ID TokenJWTEnthält Nutzerinfo für die React-App (Name, Rollen)
Refresh TokenopaqueErneuert das Access Token ohne erneuten Login

Login-Flow (Authorization Code + PKCE)

Die React-App nutzt den Authorization Code Flow mit PKCE (Proof Key for Code Exchange), den empfohlenen Flow für Single Page Applications ohne sicheres Backend-Secret. Alle Anfragen laufen über NGINX, der als transparenter Reverse Proxy fungiert und im Ablauf nicht sichtbar ist.

API-Aufruf mit Token-Validierung

Nach dem Login schickt die React-App das Access Token bei jedem Aufruf mit. Der Microservice als Resource Server validiert das Token eigenständig über den öffentlichen Schlüssel von Keycloak (JWKS), ohne Keycloak bei jeder Anfrage kontaktieren zu müssen.

Rollen und Zugriffssteuerung

Keycloak verwaltet Rollen, die im JWT als Claims enthalten sind. Die Microservices lesen diese Claims aus und entscheiden damit, welche Aktionen ein Nutzer ausführen darf. Die React-App liest die Rollen aus dem ID Token und blendet Funktionen entsprechend ein oder aus.