docs: enforce pam always available
This commit is contained in:
@ -14,6 +14,7 @@ By: Codex (GPT-5)
|
|||||||
| 28.12.2025 | 📝 Req | ID: US_000025 Runbook/Validierungsschritte dokumentiert. By: Codex (GPT-5) |
|
| 28.12.2025 | 📝 Req | ID: US_000025 Runbook/Validierungsschritte dokumentiert. By: Codex (GPT-5) |
|
||||||
| 28.12.2025 | 📝 Req | ID: US_000025 Validation blocked (Service/IdP nicht bereit). By: Codex (GPT-5) |
|
| 28.12.2025 | 📝 Req | ID: US_000025 Validation blocked (Service/IdP nicht bereit). By: Codex (GPT-5) |
|
||||||
| 28.12.2025 | 🏗️ Planning | ID: PR-Vorbereitung fuer feature/oidc-validation geplant. By: Codex (GPT-5) |
|
| 28.12.2025 | 🏗️ Planning | ID: PR-Vorbereitung fuer feature/oidc-validation geplant. By: Codex (GPT-5) |
|
||||||
|
| 28.12.2025 | 🏗️ Planning | ID: PAM immer aktiv; OIDC optional mit deaktivierter UI-Option dokumentiert. By: Codex (GPT-5) |
|
||||||
|
|
||||||
---
|
---
|
||||||
## Legende
|
## Legende
|
||||||
|
|||||||
@ -20,7 +20,7 @@ Then open `http://localhost:8000/` and log in via PAM (default) to start quickly
|
|||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
Set in `/etc/skd/env` (see `env.example`):
|
Set in `/etc/skd/env` (see `env.example`):
|
||||||
- `SKD_AUTH_MODE`: `pam` (default) or `oidc`.
|
- PAM-Login ist immer aktiv. OIDC wird zusaetzlich angeboten, wenn konfiguriert.
|
||||||
- `SKD_AUTH_SECRET`: HMAC secret for bearer tokens/cookies (set a strong value).
|
- `SKD_AUTH_SECRET`: HMAC secret for bearer tokens/cookies (set a strong value).
|
||||||
- `SKD_TOKEN_TTL_SECONDS`: token lifetime (default 900s).
|
- `SKD_TOKEN_TTL_SECONDS`: token lifetime (default 900s).
|
||||||
- `SKD_AUTH_ALLOWED_USERS`: optional comma list of accounts allowed to log in (used for PAM and as an allowlist for OIDC claims).
|
- `SKD_AUTH_ALLOWED_USERS`: optional comma list of accounts allowed to log in (used for PAM and as an allowlist for OIDC claims).
|
||||||
|
|||||||
@ -3,7 +3,8 @@
|
|||||||
SKD_ALLOWED_USERS=child1,child2
|
SKD_ALLOWED_USERS=child1,child2
|
||||||
SKD_AUTH_SECRET=change-me-secret
|
SKD_AUTH_SECRET=change-me-secret
|
||||||
SKD_TOKEN_TTL_SECONDS=900
|
SKD_TOKEN_TTL_SECONDS=900
|
||||||
# Auth mode: pam (default) or oidc
|
# PAM ist immer aktiv; OIDC wird zusaetzlich angeboten, wenn konfiguriert.
|
||||||
|
# SKD_AUTH_MODE bleibt optional und wird derzeit nicht erzwungen.
|
||||||
SKD_AUTH_MODE=pam
|
SKD_AUTH_MODE=pam
|
||||||
SKD_AUTH_ALLOWED_USERS=
|
SKD_AUTH_ALLOWED_USERS=
|
||||||
SKD_AUTH_ALLOWED_GROUPS=sudo
|
SKD_AUTH_ALLOWED_GROUPS=sudo
|
||||||
|
|||||||
@ -13,6 +13,7 @@ Als Admin moechte ich mich per PAM-Login anmelden, damit ich ein Session-Token e
|
|||||||
- Then die Antwort enthaelt `token` und `expires_in`
|
- Then die Antwort enthaelt `token` und `expires_in`
|
||||||
- And ein Session-Cookie mit dem Token wird gesetzt
|
- And ein Session-Cookie mit dem Token wird gesetzt
|
||||||
- And der Login ist ohne OIDC-Konfiguration als Schnellstart moeglich
|
- And der Login ist ohne OIDC-Konfiguration als Schnellstart moeglich
|
||||||
|
- And PAM-Login bleibt auch bei aktivem OIDC verfuegbar
|
||||||
|
|
||||||
## Task-Platzhalter
|
## Task-Platzhalter
|
||||||
- TASK_000007: PAM login token (Details bei Story-Start)
|
- TASK_000007: PAM login token (Details bei Story-Start)
|
||||||
|
|||||||
@ -8,12 +8,13 @@ Status: Done
|
|||||||
Als Admin moechte ich mich per OIDC anmelden, damit ich ohne Passwort-Login zugreifen kann.
|
Als Admin moechte ich mich per OIDC anmelden, damit ich ohne Passwort-Login zugreifen kann.
|
||||||
|
|
||||||
## Akzeptanzkriterien
|
## Akzeptanzkriterien
|
||||||
- Given `SKD_AUTH_MODE=oidc` und ein erreichbarer OIDC-Provider
|
- Given OIDC ist konfiguriert und ein erreichbarer OIDC-Provider
|
||||||
- When ein GET auf `/login/oidc/start` erfolgt
|
- When ein GET auf `/login/oidc/start` erfolgt
|
||||||
- Then der Nutzer wird zum Provider umgeleitet und ein State-Cookie gesetzt
|
- Then der Nutzer wird zum Provider umgeleitet und ein State-Cookie gesetzt
|
||||||
- When der Provider auf `/login/oidc/callback` mit Code und State zurueckleitet
|
- When der Provider auf `/login/oidc/callback` mit Code und State zurueckleitet
|
||||||
- Then der State wird validiert und ein Session-Cookie gesetzt
|
- Then der State wird validiert und ein Session-Cookie gesetzt
|
||||||
- And bei ungueltigem State erfolgt eine 400-Antwort
|
- And bei ungueltigem State erfolgt eine 400-Antwort
|
||||||
|
- And die OIDC-Option wird deaktiviert, wenn keine OIDC-Konfiguration vorliegt
|
||||||
|
|
||||||
## Task-Platzhalter
|
## Task-Platzhalter
|
||||||
- TASK_000008: OIDC auth callback (Details bei Story-Start)
|
- TASK_000008: OIDC auth callback (Details bei Story-Start)
|
||||||
|
|||||||
@ -10,7 +10,7 @@ Als Operator moechte ich Konfigurationen per ENV setzen, damit Verhalten und Def
|
|||||||
## Akzeptanzkriterien
|
## Akzeptanzkriterien
|
||||||
- Given Umgebungsvariablen aus `env.example`
|
- Given Umgebungsvariablen aus `env.example`
|
||||||
- When der Service startet
|
- When der Service startet
|
||||||
- Then Auth- und Session-Settings werden aus ENV geladen (`SKD_AUTH_MODE`, `SKD_AUTH_SECRET`, `SKD_TOKEN_TTL_SECONDS`, `SKD_AUTH_ALLOWED_USERS`, `SKD_AUTH_ALLOWED_GROUPS`, `SKD_AUTH_PAM_SERVICE`, `SKD_SESSION_COOKIE_NAME`, `SKD_SESSION_COOKIE_SECURE`, `SKD_OIDC_STATE_COOKIE_NAME`)
|
- Then Auth- und Session-Settings werden aus ENV geladen (`SKD_AUTH_SECRET`, `SKD_TOKEN_TTL_SECONDS`, `SKD_AUTH_ALLOWED_USERS`, `SKD_AUTH_ALLOWED_GROUPS`, `SKD_AUTH_PAM_SERVICE`, `SKD_SESSION_COOKIE_NAME`, `SKD_SESSION_COOKIE_SECURE`, `SKD_OIDC_STATE_COOKIE_NAME`)
|
||||||
- And OIDC-Settings werden aus ENV geladen (`SKD_OIDC_ISSUER`, `SKD_OIDC_CLIENT_ID`, `SKD_OIDC_CLIENT_SECRET`, `SKD_OIDC_REDIRECT_URI`, `SKD_OIDC_SCOPES`)
|
- And OIDC-Settings werden aus ENV geladen (`SKD_OIDC_ISSUER`, `SKD_OIDC_CLIENT_ID`, `SKD_OIDC_CLIENT_SECRET`, `SKD_OIDC_REDIRECT_URI`, `SKD_OIDC_SCOPES`)
|
||||||
- And Allowlist/Defaults werden aus ENV geladen (`SKD_ALLOWED_USERS`, `SKD_DEFAULT_COUNTDOWN`, `SKD_DEFAULT_SOUND`, `SKD_NOTIFY_TIMEOUT`, `SKD_DRY_RUN`)
|
- And Allowlist/Defaults werden aus ENV geladen (`SKD_ALLOWED_USERS`, `SKD_DEFAULT_COUNTDOWN`, `SKD_DEFAULT_SOUND`, `SKD_NOTIFY_TIMEOUT`, `SKD_DRY_RUN`)
|
||||||
- And Sound/Notify-Pfade sind ueber ENV ueberschreibbar (`SKD_SOUND_PLAYER`, `SKD_SOUND_FILE`, `SKD_NOTIFY_SEND_PATH`)
|
- And Sound/Notify-Pfade sind ueber ENV ueberschreibbar (`SKD_SOUND_PLAYER`, `SKD_SOUND_FILE`, `SKD_NOTIFY_SEND_PATH`)
|
||||||
|
|||||||
@ -14,6 +14,7 @@ Als Admin moechte ich mich im Web-UI anmelden, Nutzer laden und Aktionen ausfueh
|
|||||||
- When ich Nutzer lade und eine Aktion sende
|
- When ich Nutzer lade und eine Aktion sende
|
||||||
- Then die Aktionsergebnisse (Steps/Status) werden als Text angezeigt
|
- Then die Aktionsergebnisse (Steps/Status) werden als Text angezeigt
|
||||||
- And Fehlerantworten werden als Text angezeigt
|
- And Fehlerantworten werden als Text angezeigt
|
||||||
|
- And die OIDC-Option ist deaktiviert, wenn keine Konfiguration vorliegt
|
||||||
|
|
||||||
## Task-Platzhalter
|
## Task-Platzhalter
|
||||||
- TASK_000022: UI login and actions (Details bei Story-Start)
|
- TASK_000022: UI login and actions (Details bei Story-Start)
|
||||||
|
|||||||
Reference in New Issue
Block a user