Zum Hauptinhalt springen

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​

VariableStandardBeschreibung
OIDC_ISSUER_URIhttp://localhost:8082/realms/sensitive-data-scannerIssuer-URI. Die OIDC-Metadaten werden über {issuer}/.well-known/openid-configuration ermittelt; konfigurieren Sie keine JWKS-URI von Hand.
OIDC_CLIENT_IDsensitive-data-scanner-frontendÖffentlicher OIDC-Client, als der sich die Weboberfläche anmeldet.
APP_SECURITY_ROLES_CLAIMrealm_access.rolesJWT-Claim-Pfad, der die Rollen des Benutzers enthält.
APP_SECURITY_ADMIN_ROLEADMINRollenname, der Zugriff auf die Administrationsseiten gewährt.
APP_SECURITY_USER_ROLEUSERRollenname, 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​

  1. Legen Sie einen Realm an, zum Beispiel sensitive-data-scanner.
  2. 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 Beispiel https://scanner.example.com/*.
  3. Legen Sie die Realm-Rollen ADMIN und USER an und weisen Sie sie Benutzern zu. Mit Keycloaks Standard-Token-Mapping erscheinen Realm-Rollen in realm_access.roles, was dem Backend-Standard entspricht.
  4. Setzen Sie OIDC_ISSUER_URI=https://<keycloak-host>/realms/sensitive-data-scanner am Scanner-Container. Heisst Ihr öffentlicher Client anders als sensitive-data-scanner-frontend, setzen Sie zusätzlich OIDC_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.