4 pontos de integracao
1. Azure AD SSO (SAML / OIDC)
Setup OIDC (recomendado):
- 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 do passo 3
Allowed domains: @escola.edu.br (anti-shadow accounts).
JIT provisioning + atributos mapeados via SsoAttributeMapping.
2. SCIM 2.0 (provisionamento automatico)
Setup:
- Azure Portal > Enterprise Applications > Studeia > Provisioning
- Provisioning Mode: Automatic
- Tenant URL:
https://[tenant].studeia.com/api/scim/v2 - Secret Token: gerado em Studeia > Settings > SSO > SCIM Token (criptografado AES-256-GCM)
- Test Connection
- Mappings: padrao Microsoft Graph (firstName, lastName, mail, displayName, accountEnabled, groups)
- Scope: "Sync only assigned users and groups"
- Settings: cycle interval = 40 minutes (default)
- Start provisioning
Group → Course mapping: Settings > SSO > Groups. Mapeie grupo AD (ex: "Engenharia 2026.1") para Course no Studeia. Quando AD adiciona usuario ao grupo, Studeia auto-matricula.
Grupos grandes (>50 membros): processados via BullMQ async (scim-group-sync queue), Response 202 + jobId.
3. Microsoft Teams (video provider)
Setup:
- Azure AD > App registration > API Permissions > Microsoft Graph:
OnlineMeetings.ReadWrite.AllOnlineMeetingRecording.Read.All- Tipo: Application (nao Delegated)
- Admin consent (precisa de Global Administrator)
- Studeia > Settings > Video Provider > Teams > Tenant ID + Client ID + Client Secret + Organizer email
- Auth: Client Credentials flow (sem usuario interativo)
Webhook: /api/webhooks/video/teams com Graph Change Notifications. Subscription validation via validationToken retorno.
Limitacao: endMeeting nao suportado via Graph API — adapter marca como completed localmente.
4. OneDrive sync (biblioteca de midia)
Mesmo padrao do Drive integration:
- DriveIntegration model com provider=onedrive
- Tokens OAuth criptografados AES-256-GCM
- Cron
/api/cron/drive-syncsincroniza periodicamente - Operacoes: import / export / sync bidirecional / backup
Setup completo (1-2 horas)
| Etapa | Tempo |
|---|---|
| 1. Azure AD App registration | 10min |
| 2. Configurar API permissions + admin consent | 10min |
| 3. SSO OIDC em Studeia | 5min |
| 4. SCIM provisioning | 30-45min |
| 5. Teams provider | 10min |
| 6. OneDrive integration | 10min |
| 7. Testar com 5 usuarios piloto | 10min |
Troubleshooting
"AADSTS50011: Reply URL mismatch"
Redirect URI no Azure AD nao bate com o configurado em Studeia. Verificar exato match (case-sensitive).
SCIM "User not found in directory"
Usuario foi removido do grupo no AD mas Studeia ainda referencia. Aguardar proximo cycle (40min) ou trigger manual via Provisioning > Provision on demand.
Teams meeting cria mas sem audio
Organizer email no Studeia config nao tem licenca Teams ativa. Verificar Microsoft 365 admin center.
LGPD + GDPR
- Tokens OAuth criptografados AES-256-GCM (regra 15)
- SCIM Bearer token criptografado (regra 85)
- Audit completo via ScimAuditLog (regra 89)
- Microsoft DPA aplicavel para empresas europeias