Skip to content

Tester le SSO en local

Ce guide sert a preparer un test local du portail auth avec des applications consommatrices comme outil-bdd et formulaires.

Objectif du test :

  • le portail auth local emet un app_access_token court ;
  • les apps rafraichissent ce token silencieusement via /session-status ;
  • une session ouverte sur le portail auth donne acces aux apps sans ressaisir les identifiants ;
  • une deconnexion centrale finit par deconnecter les apps consommatrices.

Regle importante sur les origins

En local, utiliser le meme hostname partout autant que possible.

Recommande :

text
http://localhost:5173  auth
http://localhost:8000  console-admin/back
http://localhost:4000  outil-bdd/front
http://localhost:3000  outil-bdd/back
http://localhost:9000  formulaires/front
http://localhost:3001  formulaires/back

Eviter de melanger localhost et 127.0.0.1 pendant les tests SSO. Pour le navigateur, ce sont deux origins differentes, et le refresh silencieux par iframe peut donner des resultats trompeurs.

Pour un test hybride avec AUTH et console-admin/back en staging mais une application consommatrice en local, l'origine locale doit etre autorisee explicitement cote console-admin/back staging avec AUTH_APP_ALLOWED_LOCAL_ORIGINS. Exemple : http://localhost:4000,http://localhost:9000. Cette variable remplace les anciennes allowlists front et ne doit contenir que des origins locales exactes.

Variables attendues

console-admin/back

env
PORT=8000
FRONT_URL=http://localhost:5173
ENVIRONMENT=default
APP_ACCESS_TOKEN_SECRET=...
AUTH_INTROSPECTION_SECRET=...
APP_ACCESS_TOKEN_TTL_SECONDS=300

Pour une demo locale, APP_ACCESS_TOKEN_TTL_SECONDS=10 permet de rendre le refresh visible. Ne pas garder 10 en production.

console-admin/auth

env
VITE_API_URL=http://localhost:8000
VITE_DEFAULT_APPLICATION=bdd
VITE_DEFAULT_ENVIRONMENT=default

outil-bdd/front

env
PORT=4000
FRONT_URL=http://localhost:4000
BASE_URL=http://localhost:3000
AUTH_APP_URL=http://localhost:5173
APPLICATION=bdd
ENVIRONMENT=default

outil-bdd/back

env
PORT=3000
FRONT_URL=http://localhost:4000
AUTH_APP_URL=http://localhost:5173
APPLICATION=bdd
ENVIRONMENT=default
APP_ACCESS_TOKEN_SECRET=...

APP_ACCESS_TOKEN_SECRET doit etre identique a celui de console-admin/back.

formulaires/front

env
FRONT_URL=http://localhost:9000
BASE_URL=http://localhost:3001
UPLOAD_URL=http://localhost:3001
AUTH_APP_URL=http://localhost:5173
APPLICATION=formulaires
ENVIRONMENT=default

formulaires/back

env
PORT=3001
FRONT_URL=http://localhost:9000
AUTH_APP_URL=http://localhost:5173
APPLICATION=formulaires
ENVIRONMENT=default
APP_ACCESS_TOKEN_SECRET=...

APP_ACCESS_TOKEN_SECRET doit etre identique a celui de console-admin/back.

Diagnostic automatique

Depuis console-admin :

bash
node scripts/check-local-sso.mjs

Avec verification HTTP des serveurs locaux :

bash
node scripts/check-local-sso.mjs --http

Le script verifie :

  • la presence des .env attendus ;
  • les couples front/back ;
  • les valeurs AUTH_APP_URL, APPLICATION, ENVIRONMENT ;
  • l'alignement de APP_ACCESS_TOKEN_SECRET entre les backends ;
  • l'absence de melange risqué entre localhost et 127.0.0.1.

Le script ne modifie aucun fichier et n'affiche pas les secrets.

Ordre de lancement local

Lancer ou verifier les services :

bash
# console-admin/back
yarn start:dev

# console-admin/auth
yarn dev

# outil-bdd/back
yarn start:dev

# outil-bdd/front
yarn dev

# formulaires/back
yarn start:dev

# formulaires/front
yarn dev

Scenario de validation

  1. Ouvrir http://localhost:9000/forms.
  2. Se connecter via http://localhost:5173.
  3. Attendre plus que le TTL du app_access_token.
  4. Naviguer dans Formulaires : l'utilisateur doit rester connecte si la session auth centrale existe.
  5. Ouvrir http://localhost:4000.
  6. L'utilisateur doit etre connecte sans ressaisir ses identifiants.
  7. Se deconnecter depuis une app ou le portail auth.
  8. Revenir sur l'autre app : elle doit rediriger vers le portail auth au prochain check, focus, refresh ou appel API.

Production

En production, mettre a jour :

  • APP_ACCESS_TOKEN_TTL_SECONDS, typiquement 300, 120 ou 60 selon le compromis securite/UX ;
  • APP_ACCESS_TOKEN_SECRET identique sur console-admin/back, outil-bdd/back et formulaires/back ;
  • AUTH_APP_URL sur chaque front/back consommateur ;
  • APPLICATION avec la cle technique de l'app ;
  • ENVIRONMENT avec la cle d'environnement existante cote portail auth.