Identity Provider
Benutzer melden sich über Ihren eigenen OIDC-Identity-Provider an; das Scanner-Backend validiert JWTs als OAuth2 Resource Server. Keycloak ist das Referenz-Setup, es funktioniert aber jeder standardkonforme OIDC-Provider.
Backend-Einstellungen
| Variable | Standard | Beschreibung |
|---|---|---|
OIDC_ISSUER_URI | http://localhost:8082/realms/sensitive-data-scanner | Issuer-URI. Die OIDC-Metadaten werden über {issuer}/.well-known/openid-configuration ermittelt; konfigurieren Sie keine JWKS-URI von Hand. |
OIDC_CLIENT_ID | sensitive-data-scanner-frontend | Öffentlicher OIDC-Client, als der sich die Weboberfläche anmeldet. |
APP_SECURITY_ROLES_CLAIM | realm_access.roles | JWT-Claim-Pfad, der die Rollen des Benutzers enthält. |
APP_SECURITY_ADMIN_ROLE | ADMIN | Rollenname, der Zugriff auf die Administrationsseiten gewährt. |
APP_SECURITY_USER_ROLE | USER | Rollenname, der den gewöhnlichen Zugriff auf die Anwendung gewährt. |
Rollen
Die Anwendung unterscheidet zwei Rollen:
- ADMIN - voller Zugriff auf jede Seite und jede Aktion.
- USER - rein lesender Zugriff auf das Risiko-Dashboard, die Fundliste samt Funddetail und die Historie der Unterdrückungen. Ein USER kann einen Fund weder prüfen noch einstufen, keine Unterdrückung anlegen oder aufheben und keinen Scan starten, pausieren, fortsetzen oder abbrechen.
Jede andere Seite ist ADMIN-only: Scans, Regelkatalog, eigene Regel anlegen, Audit-Log, Jira-Verbindung, Lizenz, Scan-Konfiguration, Regelsatz-Transfer und Reporting. Die Navigation blendet aus, was ein USER nicht erreichen kann, und eine nicht berechtigte Anfrage wird mit HTTP 403 abgewiesen.
Ein angemeldetes Konto mit keiner der beiden Rollen hat überhaupt keinen Zugriff: Jeder Endpunkt antwortet mit HTTP 403, und die Weboberfläche zeigt eine entsprechende Seite. ADMIN allein genügt -- die Rolle schließt den gewöhnlichen Zugriff ein, ein Konto braucht also nicht beide Rollen.
Beide Rollennamen sind konfigurierbar, über APP_SECURITY_ADMIN_ROLE und
APP_SECURITY_USER_ROLE, falls Ihr Provider andere Rollennamen verwendet.
Vergeben Sie diese als Realm- bzw. Client-Rollen in Ihrem Provider, damit sie im konfigurierten Rollen-Claim erscheinen.
Beispiel Keycloak
- Legen Sie einen Realm an, zum Beispiel
sensitive-data-scanner. - Legen Sie einen öffentlichen Client für die Web-UI an, zum Beispiel
sensitive-data-scanner-frontend, mit Authorization Code + PKCE, und tragen Sie Ihren Scanner-Origin als gültige Redirect-URI ein, zum Beispielhttps://scanner.example.com/*. - Legen Sie die Realm-Rollen
ADMINundUSERan und weisen Sie sie Benutzern zu. Mit Keycloaks Standard-Token-Mapping erscheinen Realm-Rollen inrealm_access.roles, was dem Backend-Standard entspricht. - Setzen Sie
OIDC_ISSUER_URI=https://<keycloak-host>/realms/sensitive-data-scanneram Scanner-Container. Heisst Ihr öffentlicher Client anders alssensitive-data-scanner-frontend, setzen Sie zusätzlichOIDC_CLIENT_ID.
Die Weboberfläche hat diese Werte nicht einkompiliert: Sie liest sie beim Start
vom öffentlichen Endpunkt GET /api/config des Scanners, sodass dasselbe Image
sich an jedem Provider anmeldet.