Skip to content

Contrat SSO — Console centrale → Rapport

Objectif : Rapport délègue l'authentification à la console centrale (SSO) et gère ensuite ses propres droits fins (établissement / domaine / dossier). Pour câbler le login dans Rapport, j'ai besoin de préciser le contrat ci-dessous.

1. Protocole

  • [ ] OIDC / OAuth2 (Authorization Code + PKCE) ?
  • [ ] JWT signé remis directement ?
  • [ ] Cookie de session partagé (même domaine) ?
  • Autre : …

2. Contenu du jeton / de la session (claims)

Que reçoit Rapport au login, au-delà de l'identité ?

  • [ ] userId (identifiant stable de l'utilisateur dans la console centrale)
  • [ ] email, name
  • [ ] entrepriseId (le client) + nom
  • [ ] role global : admin | user
  • [ ] établissements autorisés (liste d'ids/codes) — ou bien Rapport les lit ailleurs ?
  • [ ] modules de l'abonnement (ex. rapport, saisie…)
  • [ ] siège/licence Rapport (présent / actif ?)

⭐ Question clé : le jeton porte-t-il déjà role + établissements + modules, ou Rapport doit-il les synchroniser (API/base) côté serveur ? Ça décide du modèle de données.

3. Validation côté Rapport

  • [ ] Clé publique JWKS (URL) ?
  • [ ] Secret partagé (HMAC) ?
  • [ ] Endpoint d'introspection / /userinfo ?
  • Durée de vie du jeton + refresh ?

4. Flux

  • URL de login (redirection vers la console) : …
  • URL de retour (callback) attendue par la console : … (ex. https://rapport.…/auth/callback)
  • Déconnexion (logout central ?) : …
  • Domaines/origines à autoriser (CORS) entre console et Rapport : …

5. Licences / sièges

  • [ ] C'est la console centrale qui bloque l'accès si pas de siège attribué ?
  • [ ] Ou Rapport doit vérifier le siège (et où lire l'info) ?

6. Provisioning des utilisateurs dans Rapport

  • À la 1ʳᵉ connexion, Rapport crée-t-il un enregistrement local (mirroir) lié au userId SSO ?
  • Comment Rapport liste les utilisateurs d'une entreprise (pour leur attribuer des droits) : appel API de la console ? Webhook de synchro ? Ils n'apparaissent qu'après 1ʳᵉ connexion ?

Une fois ces points tranchés, je câble le login SSO + l'enforcement. En parallèle je conçois le modèle de droits de Rapport (voir permissions-model.md), indépendant du SSO.