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), provisioning JIT et group-to-course mapping. Compatible Okta, Azure AD, Google Workspace et tout IdP standard.

2026-05-23 8 min
Resposta curta

Le plan Enterprise de Studeia supporte SAML 2.0 (via node-saml), OIDC avec PKCE et SCIM 2.0 (14 endpoints RFC 7644). Le JIT provisioning crée les utilisateurs lors du premier login, le group-to-course mapping inscrit automatiquement les apprenants aux cours lorsque l'IdP les ajoute au groupe, le Bearer token SCIM est chiffré AES-256-GCM, tous les événements sont audités dans ScimAuditLog. Intègre avec Okta, Azure AD, Google Workspace et tout IdP standard.

Prérequis

  • Plan Enterprise (vérifié sur la route /api/auth/sso/[tenantSlug] — les autres plans retournent 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 emails (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-tampering)
  • 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 (auto-fetch)
  • Client ID + Client Secret (chiffré AES-256-GCM)
  • Scopes — par défaut : openid profile email
  • PKCE — toujours activé (méthode S256 challenge)

Flux

  1. L'apprenant clique sur "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'User 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           (list, avec filter)
POST   /api/scim/v2/Users           (create)
GET    /api/scim/v2/Users/{id}
PUT    /api/scim/v2/Users/{id}      (replace complet)
PATCH  /api/scim/v2/Users/{id}      (partiel — compatible Microsoft Graph)
DELETE /api/scim/v2/Users/{id}      (soft-delete : User.status=suspended)

GET    /api/scim/v2/Groups          (list)
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 via 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. Start provisioning

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 au cours
  4. Lorsqu'il le retire → annulation de l'inscription (status=cancelled)
  5. Grands groupes (>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'email 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 timestamp + IP + acteur (IdP) + utilisateur/groupe affecté + payload (redacted)
  • AdminAuditLog pour les modifications de SsoConfig par un administrateur institutionnel

Limitations

  • LDAP direct (sans SAML/OIDC) non supporté nativement — roadmap
  • Just-in-time deprovisioning 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)
  • Group nesting (groupes imbriqués) partiellement supporté — il est recommandé de les aplatir dans l'IdP

Voir aussi

FAQ

Studeia supporte-t-il 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 supporte-t-il ?

SAML 2.0 (via node-saml, valide la signature XML, support SP-initiated et IdP-initiated), OIDC avec Authorization Code + PKCE + discovery automatique, SCIM 2.0 pour le provisioning (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 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 bulk.

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

Oui. Un SsoGroup peut être mappé à 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 grands groupes (>50 membres) sont traités via BullMQ (jobId retourné).

Quel est le temps moyen de configuration SSO ?

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

Veja tambem

SSO Enterprise : SAML, OIDC et SCIM 2.0