Aller au contenu
Studeia Docs
AI-assisted translation — last updated 2026-05-23. For original (pt-BR or en-US), use the language switcher.

SSO Enterprise : SAML, OIDC et SCIM 2.0

Studeia Enterprise : SAML 2.0, OIDC avec PKCE, SCIM 2.0 (14 endpoints RFC 7644), JIT provisioning et group-to-course mapping. Intègre Okta, Azure AD, Google Workspace et tout IdP standard

Par Équipe Studeia 2026-05-23 8 min
Resposta curta

Le SSO Enterprise de Studeia permet aux étudiants et aux enseignants de se connecter avec leur compte institutionnel (SAML 2.0, OIDC) et provisionne les utilisateurs et les inscriptions automatiquement via SCIM 2.0 — lorsqu'une personne rejoint ou quitte l'annuaire (Okta, Azure AD, Google), le compte est créé ou désactivé sans intervention manuelle. En mappant des groupes vers des cours, l'inscription devient automatique. Résultat : moins de mots de passe, plus de sécurité et zéro gestion manuelle des comptes à grande échelle.

Prérequis

  • Plan Enterprise (vérifié sur la route /api/auth/sso/[tenantSlug] — les autres plans reçoivent une erreur 403)
  • Domaine configuré (white-label optionnel mais recommandé)
  • Accès administrateur à l'IdP (Okta, Azure AD, Google Workspace, Ping, OneLogin, etc.)

SAML 2.0

Configuration

Settings > SSO > Add Provider > SAML

Champs :

  • Display name — nom affiché sur le bouton "Sign in with..."
  • Metadata XML URL OU Metadata XML collé — fourni par l'IdP
  • SP-initiated ou IdP-initiated — Studeia supporte les deux
  • Allowed domains — restreint les e-mails (anti-shadow accounts)

Endpoints exposés

  • ACS (Assertion Consumer Service) : /api/auth/sso/[tenantSlug]/saml/callback
  • SP metadata : /api/institution/sso/metadata

Validation

La réponse SAML est validée via node-saml :

  • Vérification de la signature XML (anti-falsification)
  • Validation des namespaces XML SAML (anti-XXE)
  • Vérifications NotBefore/NotOnOrAfter
  • Restriction d'audience

OIDC

Configuration

Settings > SSO > Add Provider > OIDC

Champs :

  • Discovery URLhttps://idp.com/.well-known/openid-configuration (récupération automatique)
  • Client ID + Client Secret (chiffré AES-256-GCM)
  • Scopes — par défaut : openid profile email
  • PKCE — toujours activé (méthode de challenge S256)

Flux

  1. L'étudiant clique "Sign in with [IdP]" → /api/auth/sso/[tenantSlug]/oidc
  2. Redirection vers l'IdP avec PKCE challenge + state signé HMAC + nonce dans Redis (TTL 15min anti-replay)
  3. L'IdP authentifie → callback /api/auth/sso/[tenantSlug]/oidc/callback
  4. Studeia valide le state + nonce, échange le code contre des tokens (PKCE verifier)
  5. Endpoint Userinfo → JIT provisioning (crée l'utilisateur s'il n'existe pas) → session Supabase

SCIM 2.0

14 endpoints RFC 7644

GET    /api/scim/v2/ServiceProviderConfig
GET    /api/scim/v2/ResourceTypes
GET    /api/scim/v2/Schemas

GET    /api/scim/v2/Users           (liste, avec filtre)
POST   /api/scim/v2/Users           (création)
GET    /api/scim/v2/Users/{id}
PUT    /api/scim/v2/Users/{id}      (remplacement complet)
PATCH  /api/scim/v2/Users/{id}      (partiel — compat. Microsoft Graph)
DELETE /api/scim/v2/Users/{id}      (soft-delete : User.status=suspended)

GET    /api/scim/v2/Groups          (liste)
POST   /api/scim/v2/Groups
GET    /api/scim/v2/Groups/{id}
PUT    /api/scim/v2/Groups/{id}
PATCH  /api/scim/v2/Groups/{id}
DELETE /api/scim/v2/Groups/{id}

Configuration dans Azure AD (exemple)

  1. Azure Portal > Enterprise Applications > Studeia > Provisioning
  2. Provisioning Mode : Automatic
  3. Tenant URL : https://votreapp.studeia.com/api/scim/v2
  4. Secret Token : généré dans Studeia dans Settings > SSO > SCIM Token (Bearer, chiffré en base de données)
  5. Test Connection
  6. Mappings : attributs par défaut (compatible Microsoft Graph)
  7. Settings > Scope : "Sync only assigned users and groups"
  8. Démarrer le provisionnement

Group → Course mapping

Permet l'inscription automatique lorsque l'IdP ajoute un utilisateur à un groupe :

  1. Configurez le mapping dans Settings > SSO > Groups
  2. Pour chaque SsoGroup, choisissez le Course cible
  3. Lorsque SCIM ajoute un membre au groupe → Studeia crée une Enrollment active dans le cours
  4. Lorsqu'il le retire → l'inscription est annulée (status=cancelled)
  5. Groupes importants (>50 membres) : traitement via BullMQ (queue scim-group-sync), réponse 202 + jobId

Sécurité

Tokens

  • Bearer token SCIM : chiffré AES-256-GCM dans TenantSsoConfig.scimToken — JAMAIS en texte clair
  • Tokens OAuth (intégration Google Workspace) : même standard
  • State OAuth : HMAC-SHA256 avec OAUTH_STATE_SECRET + nonce Redis (TTL 15min)

JIT provisioning

  • allowedDomains valide l'e-mail avant de créer l'utilisateur
  • Attributs de l'IdP mappés via SsoAttributeMapping
  • Rôle par défaut configurable (student ou teacher)

Audit

ScimAuditLog enregistre :

  • Toute opération SCIM (Create/Update/Delete) avec horodatage + IP + acteur (IdP) + utilisateur/groupe affecté + payload (expurgé)
  • AdminAuditLog pour les modifications de SsoConfig par l'administrateur institutionnel

Limitations

  • LDAP direct (sans SAML/OIDC) non supporté nativement — feuille de route
  • Déprovisionnement just-in-time via SAML SLO (Single Logout) partiel — il est recommandé d'utiliser SCIM pour un déprovisionnement fiable
  • Authentification multi-facteurs déléguée à l'IdP (Studeia ne gère pas son propre MFA lorsque le SSO est actif)
  • Imbrication de groupes (groupes dans des groupes) partiellement supportée — il est recommandé d'aplatir la structure dans l'IdP

Voir aussi

FAQ

Studeia prend-il en charge le SSO avec Okta ?

Oui, via SAML 2.0 ou OIDC. Configurez dans Settings > SSO > Add Provider, choisissez SAML ou OIDC, collez le metadata XML (SAML) ou la discovery URL (OIDC). Le JIT provisioning crée les utilisateurs automatiquement lors du premier login.

Quels protocoles SSO Studeia prend-il en charge ?

SAML 2.0 (via node-saml, valide la signature XML, support SP-initiated et IdP-initiated), OIDC avec Authorization Code + PKCE + découverte automatique, SCIM 2.0 pour le provisionnement (RFC 7644 — endpoints Users + Groups + ServiceProviderConfig).

SCIM 2.0 fonctionne-t-il avec Azure AD ?

Oui. Studeia expose /api/scim/v2/Users + /api/scim/v2/Groups avec authentification par Bearer token. Configurez dans Azure AD Enterprise Application > Provisioning > Provisioning Mode: Automatic > Tenant URL: https://votreapp.studeia.com/api/scim/v2 > Secret Token: généré dans Studeia. Supporte CRUD, soft-delete (User.status=suspended), opérations en masse.

Le group-to-course mapping automatique fonctionne-t-il ?

Oui. Un SsoGroup peut être mappé vers un Course via SsoGroupCourseMapping. Lorsque l'IdP ajoute un utilisateur au groupe, Studeia l'inscrit automatiquement au cours. Lorsqu'il le retire, l'inscription est annulée. Les groupes importants (>50 membres) sont traités via BullMQ (jobId retourné).

Quel est le temps moyen de configuration du SSO ?

30 à 45 minutes pour SAML/OIDC + 1 à 2 heures pour le provisionnement SCIM complet. Documenté étape par étape par IdP dans /integrations/ (Okta, Azure AD, Google Workspace).

Veja tambem

SSO Enterprise : SAML, OIDC et SCIM 2.0