Authentification OIDC : AUTH_MODE=local|oidc
- AUTH_MODE=local (défaut) : comportement inchangé, Basic si AUTH_USER et AUTH_PASSWORD sont définis, sinon aucune authentification intégrée. - AUTH_MODE=oidc : flux Authorization Code + PKCE (S256) avec state et nonce, découverte .well-known, vérification de l'ID Token (RS*/PS*/ES* via JWKS avec rotation des clés, HS* avec le secret client), émetteur, audience, expiration ; restriction optionnelle par groupes (OIDC_ALLOWED_GROUPS, OIDC_GROUPS_CLAIM, chemin pointé accepté). - Session : cookie HttpOnly SameSite=Lax signé HMAC (SESSION_SECRET, sinon DATA_DIR/.session-secret), prolongée à l'usage (SESSION_TTL d'inactivité). - Routes /auth/login, /auth/callback, /auth/logout (déconnexion propagée au fournisseur si OIDC_LOGOUT), /auth/logged-out ; GET /api/me. - /s/, /api/public/, /healthz et fichiers statiques restent publics. - Sans session : l'API répond 401 + X-Auth-Login, la navigation renvoie vers la connexion en conservant le schéma ouvert (#/chemin). - Frontend : reconnexion automatique sur 401, bouton de déconnexion. - Bibliothèque standard uniquement (internal/auth), tests avec un fournisseur simulé. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018GBsBpHJW7GxFDBV7z1zmo
This commit is contained in:
1 parent
2b6b6fc72c
commit
80fd60d006
4 files changed
+119
-4
No files matched your search
@@ -199,3 +199,10 @@ export const EyeIcon = icon(
|
||||
<path d="M22 12c-2.67 4.67-6 7-10 7s-7.33-2.33-10-7c2.67-4.67 6-7 10-7s7.33 2.33 10 7" />
|
||||
</>,
|
||||
);
|
||||
|
||||
export const LogoutIcon = icon(
|
||||
<>
|
||||
<path d="M14 8V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2-2v-2" />
|
||||
<path d="M9 12h12l-3-3M18 15l3-3" />
|
||||
</>,
|
||||
);
|
||||
Reference in new issue
Block a user