4 points d'intégration
1. Azure AD SSO (SAML / OIDC)
Configuration OIDC (recommandée) :
- Azure Portal > Azure Active Directory > App registrations > New registration
- Redirect URI :
https://[tenant].studeia.com/api/auth/sso/[slug]/oidc/callback - Certificates & secrets > New client secret
- API permissions :
openid,profile,email - Studeia > Settings > SSO > Add Provider > OIDC
- Discovery URL :
https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration - Client ID + Client Secret de l'étape 3
Allowed domains : @ecole.edu.fr (anti-comptes fantômes).
Provisionnement JIT + attributs mappés via SsoAttributeMapping.
2. SCIM 2.0 (provisionnement automatique)
Configuration :
- Azure Portal > Enterprise Applications > Studeia > Provisioning
- Provisioning Mode : Automatic
- Tenant URL :
https://[tenant].studeia.com/api/scim/v2 - Secret Token : généré dans Studeia > Settings > SSO > SCIM Token (chiffré AES-256-GCM)
- Test Connection
- Mappings : défaut Microsoft Graph (firstName, lastName, mail, displayName, accountEnabled, groups)
- Scope : "Sync only assigned users and groups"
- Settings : intervalle de cycle = 40 minutes (défaut)
- Démarrer le provisionnement
Mapping groupe → cours : Settings > SSO > Groups. Mappez un groupe AD (ex : "Ingénierie 2026.1") à un cours dans Studeia. Lorsque l'AD ajoute un utilisateur au groupe, Studeia l'inscrit automatiquement.
Grands groupes (>50 membres) : traités via BullMQ async (queue scim-group-sync), réponse 202 + jobId.
3. Microsoft Teams (fournisseur vidéo)
Configuration :
- Azure AD > App registration > API Permissions > Microsoft Graph :
OnlineMeetings.ReadWrite.AllOnlineMeetingRecording.Read.All- Type : Application (non Delegated)
- Admin consent (nécessite Global Administrator)
- Studeia > Settings > Video Provider > Teams > Tenant ID + Client ID + Client Secret + e-mail de l'organisateur
- Auth : flux Client Credentials (sans utilisateur interactif)
Webhook : /api/webhooks/video/teams avec Graph Change Notifications. Validation de l'abonnement via retour validationToken.
Limitation : endMeeting non supporté via Graph API — l'adaptateur marque la réunion comme terminée localement.
4. Synchronisation OneDrive (bibliothèque de médias)
Même fonctionnement que l'intégration Drive :
- Modèle DriveIntegration avec provider=onedrive
- Tokens OAuth chiffrés AES-256-GCM
- Cron
/api/cron/drive-syncsynchronise périodiquement - Opérations : import / export / synchronisation bidirectionnelle / sauvegarde
Configuration complète (1 à 2 heures)
| Étape | Durée |
|---|---|
| 1. Azure AD App registration | 10 min |
| 2. Configurer les permissions API + admin consent | 10 min |
| 3. SSO OIDC dans Studeia | 5 min |
| 4. Provisionnement SCIM | 30-45 min |
| 5. Fournisseur Teams | 10 min |
| 6. Intégration OneDrive | 10 min |
| 7. Tester avec 5 utilisateurs pilotes | 10 min |
Dépannage
"AADSTS50011: Reply URL mismatch"
L'URI de redirection dans Azure AD ne correspond pas à celle configurée dans Studeia. Vérifier la correspondance exacte (sensible à la casse).
SCIM "User not found in directory"
L'utilisateur a été retiré du groupe dans l'AD mais Studeia y fait toujours référence. Attendre le prochain cycle (40 min) ou déclencher manuellement via Provisioning > Provision on demand.
La réunion Teams se crée mais sans audio
L'e-mail de l'organisateur dans la configuration Studeia ne dispose pas d'une licence Teams active. Vérifier dans le centre d'administration Microsoft 365.
RGPD
- Tokens OAuth chiffrés AES-256-GCM (règle 15)
- Token Bearer SCIM chiffré (règle 85)
- Audit complet via ScimAuditLog (règle 89)
- DPA Microsoft applicable pour les entreprises européennes