Aurora Nexus
Aurora NexusSécurité

Contrat SSO Nexus pour applications externes

contrat de compatibilité des bridges SSO Nexus pour applications externes pendant la migration authentik

Objectif

Ce document fixe le contrat de compatibilite pour les applications externes qui utilisent Nexus comme point de connexion SSO pendant la migration authentik.

Decision : les flux SSO externes existants restent supportes pendant NX-AUTH-005. authentik devient l'IdP amont pour les humains, mais Nexus conserve temporairement son bridge applicatif pour les apps deja integrees.

Clarification de vocabulaire

Dans ce document, pilot designe uniquement le nom technique observe cote code Nexus :

  • route /api/auth/pilot/login;
  • route /api/auth/pilot/support/bootstrap;
  • permission source_app=pilot;
  • domaine par defaut historique pilot.auroramind.fr.

Cela ne vaut pas validation du comportement reel de l'application produit nommee Pilot. Le parcours complet de cette application doit etre confirme hors repo avant d'annoncer un test E2E utilisateur.

Flux bridge conserve

Application externe
  -> GET /api/auth/pilot/login?return_to=...&state=...
  -> Nexus verifie la session locale
  -> si absent : redirection vers /fr/login?next=...
  -> login Nexus, possiblement via authentik OIDC
  -> retour /api/auth/pilot/login
  -> Nexus verifie les permissions metier
  -> Nexus cree un code court one-time
  -> redirection return_to?code=...&state=...
  -> application externe echange le code via /api/auth/oauth/exchange

Ce bridge ne doit pas exposer les tokens authentik a l'application externe.

Endpoints concernes

EndpointRoleStatut migration
GET /api/auth/pilot/loginEntree SSO du bridge nomme pilot cote NexusA conserver pendant migration si utilise
POST /api/auth/oauth/exchangeEchange code court -> session/JWT NexusA conserver pendant migration
GET /api/auth/pilot/support/bootstrapBootstrap support du bridge nomme pilot avec JWT court dedieA conserver si utilise, secret hors depot
GET /api/auth/oidc/loginLogin humain Nexus via authentikNouveau flux amont
GET /api/auth/oidc/callbackCallback authentik -> session NexusNouveau flux amont

Invariants de securite

  • return_to doit rester allowliste par origine et chemin.
  • Le chemin autorise pour le bridge nomme pilot reste /support/auth/nexus/callback.
  • Le code court est one-time, stocke hashe, et expire selon OAUTH_LOGIN_CODE_TTL_SECONDS.
  • Un code utilise ou expire doit etre refuse par /api/auth/oauth/exchange.
  • Le bridge ne doit pas accepter un return_to arbitraire.
  • Les permissions metier Nexus restent obligatoires avant emission du code.
  • Aucun mot de passe, token authentik, cookie ou secret bootstrap ne doit etre transmis a l'app externe.

Permissions du bridge nomme pilot

Un utilisateur peut acceder au bridge nomme pilot si :

  • son role Nexus est admin; ou
  • il possede une permission source_app pilot ou support avec can_write=true.

Cette regle est volontairement locale a Nexus tant que ce bridge legacy est utilise.

Incidence authentik

Quand authentik est active, le bridge reste compatible :

Application externe -> Nexus SSO bridge -> login Nexus -> authentik -> session Nexus -> code court Nexus

Ainsi, les applications externes ne changent pas immediatement de contrat. Elles continuent a consommer le code court Nexus.

Cible future

Pour les nouvelles applications humaines :

Application externe -> authentik Authorization Code + PKCE -> access token -> API Nexus

Pour les machines :

Application machine -> authentik client_credentials -> API Nexus

Le bridge Nexus est donc un mecanisme de compatibilite legacy, pas la cible pour les nouvelles integrations.

Garde-fous pour NX-AUTH-005

NX-AUTH-005 ne doit pas :

  • supprimer /api/auth/pilot/login;
  • supprimer /api/auth/oauth/exchange;
  • supprimer oauth_login_codes;
  • casser get_current_user pour les sessions Nexus locales;
  • supprimer les utilisateurs Nexus DB necessaires au mapping metier;
  • desactiver le login legacy sans verifier que /fr/login?next=... redirige correctement vers authentik puis revient vers le bridge;
  • changer l'allowlist PILOT_SSO_ALLOWED_RETURN_ORIGINS sans inventaire applicatif.

Tests backend Nexus executes

  • utilisateur non connecte : redirection vers /fr/login?next=...;
  • utilisateur autorise : redirection return_to avec code et state;
  • utilisateur sans permission du bridge nomme pilot : redirection return_to avec error=forbidden;
  • return_to non allowliste : refus 400;
  • code court reutilise : refus 401.

Ces tests valident le comportement cote Nexus. Ils ne valident pas le parcours complet de l'application produit Pilot.

E2E utilisateur

Tests E2E utilisateur immediats : aucun pour l'application produit Pilot.

Test E2E ulterieur, conditionnel :

  • seulement apres configuration authentik staging;
  • seulement si l'application produit Pilot utilise encore le bridge Nexus /api/auth/pilot/login;
  • a executer comme test de compatibilite SSO, pas comme test MFA propre a Pilot.

A confirmer hors repo

  • L'application produit Pilot utilise-t-elle encore /api/auth/pilot/login ?
  • Existe-t-il d'autres applications externes qui collectent directement email/mot de passe Nexus ?
  • Le domaine pilot.auroramind.fr est-il bien le runtime actif a maintenir ?

On this page