SNLO – Spittank.net Ladeorganisation – OIDC-Konfiguration¶
SNLO – Spittank.net Ladeorganisation unterstützt OpenID Connect als serverseitigen Authorization-Code-Flow mit PKCE S256. Nutzer- und Administratorrechte werden aus Gruppen-Claims des Identity Providers abgeleitet.
1. OIDC-Client im Identity Provider¶
Der Client muss als vertraulicher Web-Client eingerichtet werden und den Authorization-Code-Flow erlauben.
Exakte Redirect-URI:
Beispiel:
Empfohlene Scopes:
Der Provider muss mindestens liefern:
iss,sub,aud,expundiatim ID-Token,email, standardmäßig mitemail_verified=true,- einen Anzeigenamen über
nameoder ersatzweisepreferred_username, - die Gruppen im ID-Token oder über den UserInfo-Endpunkt.
2. SNLO konfigurieren¶
Beispiel für .env:
APP_ORIGIN=https://snlo.de
COOKIE_SECURE=true
OIDC_ENABLED=true
OIDC_ISSUER_URL=https://sso.example.org/realms/home
OIDC_CLIENT_ID=snlo
OIDC_CLIENT_SECRET=ein-langes-client-secret
OIDC_SCOPES=openid profile email groups
OIDC_PROVIDER_NAME=Mein SSO
OIDC_GROUPS_CLAIM=groups
OIDC_USER_GROUPS=snlo-users
OIDC_ADMIN_GROUPS=snlo-admins
OIDC_AUTO_PROVISION=true
OIDC_LINK_BY_EMAIL=true
OIDC_AUTO_REDIRECT=true
OIDC_LOCAL_LOGIN_ENABLED=true
Danach:
3. Gruppen und Rollen¶
Gruppen werden exakt, aber ohne Beachtung der Groß-/Kleinschreibung verglichen.
Mitglied in OIDC_ADMIN_GROUPS -> ADMIN
sonst Mitglied in OIDC_USER_GROUPS -> USER
sonst -> Anmeldung abgelehnt
Ist ein Konto in beiden Gruppen, hat die Administratorgruppe Vorrang. Mehrere erlaubte Gruppen werden kommasepariert angegeben:
Der Claim-Pfad unterstützt:
Mehrere mögliche Claim-Pfade können ebenfalls kommasepariert werden:
Bei jeder OIDC-Anmeldung synchronisiert SNLO Anzeigename, E-Mail-Adresse, Gruppen und Rolle. Normale Browser-Sitzungen enden spätestens mit dem früheren Zeitpunkt aus ID-Token-Ablauf und SESSION_TTL_HOURS. Installierte PWAs können dagegen eine eigene langlebige SNLO-Anwendungssitzung verwenden; Gruppenänderungen beim Identity Provider werden dort bei der nächsten OIDC-Anmeldung übernommen.
4. Automatische Nutzeranlage und Kontoverknüpfung¶
legt bei der ersten zulässigen Anmeldung automatisch einen Nutzer ohne lokales Passwort an.
verknüpft ein bereits vorhandenes lokales Konto mit derselben verifizierten E-Mail-Adresse. Das lokale Passwort bleibt dabei erhalten. Eine E-Mail-Adresse kann nicht mit zwei verschiedenen OIDC-Identitäten verbunden werden.
Mit:
muss der Nutzer zuvor lokal mit derselben E-Mail-Adresse angelegt werden.
Standardmäßig verlangt SNLO email_verified=true:
Nur wenn der Provider diesen Standard-Claim nachweislich nicht liefert, kann die Prüfung deaktiviert werden. Das schwächt die Sicherheit der automatischen E-Mail-Verknüpfung.
5. Direkte Weiterleitung und lokaler Zugang¶
leitet einen nicht angemeldeten Browser beim Aufruf von / direkt zum Identity Provider weiter.
Bleibt der lokale Login aktiviert, ist er trotz Direktweiterleitung erreichbar unter:
Für reinen SSO-Betrieb:
Dann existiert kein lokaler Anmeldeweg. Diese Einstellung sollte erst aktiviert werden, nachdem OIDC und die Administratorgruppe praktisch getestet wurden.
Die Schaltfläche „Abmelden“ beendet die SNLO-Sitzung. Sie beendet nicht automatisch die Sitzung beim Identity Provider. Durch /?local=1 wird nach dem lokalen Logout eine sofortige automatische SSO-Neuanmeldung vermieden.
6. PWA-Sitzungen¶
Eine installierte PWA startet über /?pwa=1. Bei einer anschließend durchgeführten Anmeldung markiert SNLO die Sitzung als PWA-Sitzung. Sie verwendet:
und wird bei jedem erfolgreichen PWA-Start erneut ab dem aktuellen Zeitpunkt verlängert. Damit bleibt die App auf einem persönlichen Gerät praktisch bis zum aktiven Abmelden angemeldet. Eine normale Browser-Sitzung wird nicht ohne erneute Anmeldung in eine langlebige PWA-Sitzung umgewandelt.
Der OIDC-ID-Token wird beim Login weiterhin vollständig validiert; danach handelt es sich um eine eigenständige SNLO-Anwendungssitzung. Wer eine kürzere Bindung an aktuelle IdP-Gruppen benötigt, reduziert PWA_SESSION_TTL_DAYS entsprechend. Ein in SNLO deaktiviertes Konto verliert unabhängig davon sofort den Zugriff. Bei Browser und installierter PWA derselben Origin wird der HTTP-Cookie-Speicher je nach Plattform geteilt; nach einer PWA-Anmeldung kann die langlebige Sitzung deshalb auch im normalen Browser derselben Geräte-/Browserumgebung gelten.
7. Weitere Einstellungen¶
| Variable | Standard | Bedeutung |
|---|---|---|
OIDC_METADATA_URL |
aus Issuer abgeleitet | Abweichende Discovery-URL |
OIDC_TOKEN_ENDPOINT_AUTH_METHOD |
client_secret_basic |
alternativ client_secret_post |
OIDC_ALLOWED_ALGORITHMS |
asymmetrische Standardalgorithmen | erlaubte ID-Token-Signaturen; none ist immer verboten |
OIDC_VERIFY_TLS |
true |
TLS-Prüfung; produktiv nicht deaktivieren |
OIDC_STATE_TTL_SECONDS |
600 |
Gültigkeit von State, Nonce und PKCE-Verifier |
OIDC_EMAIL_CLAIM |
email |
Claim-Pfad für E-Mail |
OIDC_NAME_CLAIM |
name |
Claim-Pfad für Anzeigename |
Client-Secret und Gruppenregeln werden ausschließlich über die Prozessumgebung konfiguriert. Das Client-Secret wird weder über die API ausgegeben noch in PostgreSQL gespeichert.
8. Sicherheitsprüfung vor Produktivbetrieb¶
- HTTPS und
COOKIE_SECURE=trueaktivieren. - Redirect-URI exakt auf
APP_ORIGINabstimmen. - Anmeldung mit Nutzergruppe testen.
- Anmeldung mit Administratorgruppe testen.
- Konto ohne erlaubte Gruppe testen; die Anmeldung muss abgewiesen werden.
- Rollenwechsel im Identity Provider und erneute Anmeldung testen.
- Erst danach optional den lokalen Login deaktivieren.
.envwie ein Geheimnis sichern und Dateirechte einschränken.