Contexte — Écart relevé par Bruno le 2026-10-21 : Kanbante, 4e produit du périmètre Fusion (validé au prototype v7.2), n'a pas reçu la couche identité livrée pendant la nuit sur les trois autres applications (ACC-3, épopée Projets/fusion-trois-apps#7). Cette carte est le rattrapage.
Déjà livré ailleurs (patrons à suivre)
Émettrice : ObsiGate 2.71.0 — cookie draco_session (JWS HS256, TTL 12 h, sub = id ObsiGate, révocation par jti exposée via GET /api/sso/revocations sous clé machine, GET /sso/authorize?return_to= en liste blanche *.dracodev.net).
Validateurs : TikTak 0.52.0 (app/draco.py), Flowdeck 7.74.0 (app/services/draco.py, pont GET /auth/draco), ObsiGate 2.72.0 (repli dans get_current_user).
Périmètre
Validateur local du cookie draco_session : HS256 vérifié avec DRACO_SESSION_SECRET (et _PREV en rotation), algorithme épinglé, expiration, liste de révocation de l'émettrice en cache 60 s (DRACO_SSO_MACHINE_KEY). Mêmes sémantiques que les validateurs TikTak/Flowdeck (vérification hmac/hashlib, pas de dépendance JWT nouvelle).
Pont GET /auth/draco : cookie valide → création de la session native Kanbante (cookie signé HMAC de la 0.22.0) → redirection vers le board (ou next local validé). Cookie absent/invalide → redirection /login.
Correspondance d'identité : Kanbante est mono-utilisateur (identifiants configurés par l'environnement) → pas de table de liens ; un jeton draco valide désigne l'opérateur configuré (repli mono-utilisateur des autres apps, ici le seul cas).
Bouton « Se connecter avec ObsiGate (SSO) » sur /login, via https://og.dracodev.net/sso/authorize?return_to=https://kanbante.dracodev.net/auth/draco.
Inerte tant que DRACO_SESSION_SECRET n'est pas configuré (comportement actuel inchangé, Basic Auth des scripts intact).
Critères d'acceptation
Tests miroirs de test_draco_sso.py (TikTak) : jeton valide → session ; signature falsifiée, jeton expiré, jti révoqué → refusés ; pont sans cookie → /login ; inerte sans secret.
Suite Kanbante complète verte, aucune régression.
Carte avancée en Révision seulement (Terminé = Bruno).
Activation (Bruno, au déploiement) : poser le même DRACO_SESSION_SECRET et DRACO_SSO_MACHINE_KEY dans l'environnement du conteneur Kanbante, redéployer.
**Contexte** — Écart relevé par Bruno le 2026-10-21 : Kanbante, 4e produit du périmètre Fusion (validé au prototype v7.2), n'a pas reçu la couche identité livrée pendant la nuit sur les trois autres applications (ACC-3, épopée `Projets/fusion-trois-apps#7`). Cette carte est le rattrapage.
**Déjà livré ailleurs (patrons à suivre)**
- Émettrice : ObsiGate 2.71.0 — cookie `draco_session` (JWS HS256, TTL 12 h, `sub` = id ObsiGate, révocation par `jti` exposée via `GET /api/sso/revocations` sous clé machine, `GET /sso/authorize?return_to=` en liste blanche `*.dracodev.net`).
- Validateurs : TikTak 0.52.0 (`app/draco.py`), Flowdeck 7.74.0 (`app/services/draco.py`, pont `GET /auth/draco`), ObsiGate 2.72.0 (repli dans `get_current_user`).
**Périmètre**
1. Validateur local du cookie `draco_session` : HS256 vérifié avec `DRACO_SESSION_SECRET` (et `_PREV` en rotation), algorithme épinglé, expiration, liste de révocation de l'émettrice en cache 60 s (`DRACO_SSO_MACHINE_KEY`). Mêmes sémantiques que les validateurs TikTak/Flowdeck (vérification hmac/hashlib, pas de dépendance JWT nouvelle).
2. Pont `GET /auth/draco` : cookie valide → création de la session native Kanbante (cookie signé HMAC de la 0.22.0) → redirection vers le board (ou `next` local validé). Cookie absent/invalide → redirection `/login`.
3. Correspondance d'identité : Kanbante est mono-utilisateur (identifiants configurés par l'environnement) → **pas de table de liens** ; un jeton draco valide désigne l'opérateur configuré (repli mono-utilisateur des autres apps, ici le seul cas).
4. Bouton « Se connecter avec ObsiGate (SSO) » sur `/login`, via `https://og.dracodev.net/sso/authorize?return_to=https://kanbante.dracodev.net/auth/draco`.
5. **Inerte tant que `DRACO_SESSION_SECRET` n'est pas configuré** (comportement actuel inchangé, Basic Auth des scripts intact).
**Critères d'acceptation**
- Tests miroirs de `test_draco_sso.py` (TikTak) : jeton valide → session ; signature falsifiée, jeton expiré, `jti` révoqué → refusés ; pont sans cookie → `/login` ; inerte sans secret.
- Suite Kanbante complète verte, aucune régression.
- Carte avancée en **Révision** seulement (Terminé = Bruno).
**Activation (Bruno, au déploiement)** : poser le même `DRACO_SESSION_SECRET` et `DRACO_SSO_MACHINE_KEY` dans l'environnement du conteneur Kanbante, redéployer.
bruno
added this to the Fusion — accès centralisé milestone 2026-10-21 07:46:59 -04:00
bruno
added the roadmap label 2026-10-21 07:46:59 -04:00
✅Livré en Kanbante 0.23.0 — en Révision (Spark, 2026-10-21). Commit f087b41.
Validateur local app/draco.py (JWS HS256, secret partagé lu dans les réglages — DRACO_SESSION_SECRET/_PREV, DRACO_SSO_MACHINE_KEY, DRACO_SSO_URL ; révocation de l'émettrice en cache 60 s, mêmes sémantiques que TikTak 0.52.0 et Flowdeck 7.74.0). Pont GET /auth/draco : cookie valide → session native de l'opérateur configuré (mono-utilisateur, aucun mapping) ; sinon retour /login. Bouton « Se connecter avec ObsiGate (SSO) » sur l'écran de connexion. Basic Auth des scripts intact, inerte sans le secret.
Contrôles : 7 tests dédiés verts, suite complète 211/211. Activation (Bruno) : redéployer Kanbante 0.23.0 et poser DRACO_SESSION_SECRET + DRACO_SSO_MACHINE_KEY dans l'environnement du conteneur — les mêmes valeurs que les trois autres applications.
✅ **Livré en Kanbante 0.23.0 — en Révision** (Spark, 2026-10-21). Commit `f087b41`.
Validateur local `app/draco.py` (JWS HS256, secret partagé lu dans les réglages — `DRACO_SESSION_SECRET`/`_PREV`, `DRACO_SSO_MACHINE_KEY`, `DRACO_SSO_URL` ; révocation de l'émettrice en cache 60 s, mêmes sémantiques que TikTak 0.52.0 et Flowdeck 7.74.0). Pont `GET /auth/draco` : cookie valide → session native de l'opérateur configuré (mono-utilisateur, aucun mapping) ; sinon retour `/login`. Bouton « Se connecter avec ObsiGate (SSO) » sur l'écran de connexion. Basic Auth des scripts intact, **inerte sans le secret**.
Contrôles : 7 tests dédiés verts, suite complète **211/211**. **Activation (Bruno)** : redéployer Kanbante 0.23.0 et poser `DRACO_SESSION_SECRET` + `DRACO_SSO_MACHINE_KEY` dans l'environnement du conteneur — les mêmes valeurs que les trois autres applications.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Contexte — Écart relevé par Bruno le 2026-10-21 : Kanbante, 4e produit du périmètre Fusion (validé au prototype v7.2), n'a pas reçu la couche identité livrée pendant la nuit sur les trois autres applications (ACC-3, épopée
Projets/fusion-trois-apps#7). Cette carte est le rattrapage.Déjà livré ailleurs (patrons à suivre)
draco_session(JWS HS256, TTL 12 h,sub= id ObsiGate, révocation parjtiexposée viaGET /api/sso/revocationssous clé machine,GET /sso/authorize?return_to=en liste blanche*.dracodev.net).app/draco.py), Flowdeck 7.74.0 (app/services/draco.py, pontGET /auth/draco), ObsiGate 2.72.0 (repli dansget_current_user).Périmètre
draco_session: HS256 vérifié avecDRACO_SESSION_SECRET(et_PREVen rotation), algorithme épinglé, expiration, liste de révocation de l'émettrice en cache 60 s (DRACO_SSO_MACHINE_KEY). Mêmes sémantiques que les validateurs TikTak/Flowdeck (vérification hmac/hashlib, pas de dépendance JWT nouvelle).GET /auth/draco: cookie valide → création de la session native Kanbante (cookie signé HMAC de la 0.22.0) → redirection vers le board (ounextlocal validé). Cookie absent/invalide → redirection/login./login, viahttps://og.dracodev.net/sso/authorize?return_to=https://kanbante.dracodev.net/auth/draco.DRACO_SESSION_SECRETn'est pas configuré (comportement actuel inchangé, Basic Auth des scripts intact).Critères d'acceptation
test_draco_sso.py(TikTak) : jeton valide → session ; signature falsifiée, jeton expiré,jtirévoqué → refusés ; pont sans cookie →/login; inerte sans secret.Activation (Bruno, au déploiement) : poser le même
DRACO_SESSION_SECRETetDRACO_SSO_MACHINE_KEYdans l'environnement du conteneur Kanbante, redéployer.✅ Livré en Kanbante 0.23.0 — en Révision (Spark, 2026-10-21). Commit
f087b41.Validateur local
app/draco.py(JWS HS256, secret partagé lu dans les réglages —DRACO_SESSION_SECRET/_PREV,DRACO_SSO_MACHINE_KEY,DRACO_SSO_URL; révocation de l'émettrice en cache 60 s, mêmes sémantiques que TikTak 0.52.0 et Flowdeck 7.74.0). PontGET /auth/draco: cookie valide → session native de l'opérateur configuré (mono-utilisateur, aucun mapping) ; sinon retour/login. Bouton « Se connecter avec ObsiGate (SSO) » sur l'écran de connexion. Basic Auth des scripts intact, inerte sans le secret.Contrôles : 7 tests dédiés verts, suite complète 211/211. Activation (Bruno) : redéployer Kanbante 0.23.0 et poser
DRACO_SESSION_SECRET+DRACO_SSO_MACHINE_KEYdans l'environnement du conteneur — les mêmes valeurs que les trois autres applications.