Introduction
Levelia s'intègre à votre fournisseur d'identité (IdP) via des standards : OIDC et SAML 2.0 pour l'authentification, SCIM 2.0 pour le provisioning. Fournisseurs pris en charge : Okta, Microsoft Entra ID, Google Workspace, Ping Identity, OneLogin, et tout IdP conforme.
URL de base : https://app.levelia.fr. La configuration se fait par organisation (groupe) ; chaque connexion possède un connectionId.
Le déploiement est progressif et réversible : on crée une connexion (état désactivée), on configure l'IdP, on mappe les groupes, on vérifie une connexion réelle, puis on impose le SSO (enforced).
Créer une connexion
Depuis les paramètres SSO (rôle owner / admin / group_admin), créez une connexion OIDC ou SAML. Levelia renvoie les URL à déclarer côté IdP.
// Requête (OIDC)
{ "type": "oidc", "issuer": "https://votre-tenant.okta.com",
"clientId": "…", "clientSecret": "…" }
// Réponse : connexion créée, état "enabled_not_enforced"
{ "id": "<connectionId>", "type": "oidc", "state": "enabled_not_enforced" }Les états d'une connexion : disabled → enabled_not_enforced → enforced.
Configurer OIDC
Déclarez Levelia comme application OIDC dans votre IdP, avec l'URL de redirection :
Redirect URI (callback) : https://app.levelia.fr/api/auth/sso/<connectionId>/callback URL de démarrage (login) : https://app.levelia.fr/api/auth/sso/<connectionId>/login Scopes : openid profile email (+ groups) Claims requis : email, name, groups
Levelia valide les jetons via la découverte OIDC de l'émetteur (JWKS) : signature, audience et anti-rejeu. Le clientSecret est chiffré au repos.
Configurer SAML 2.0
Déclarez Levelia comme Service Provider (SP) SAML dans votre IdP :
ACS URL (Assertion Consumer Service) : https://app.levelia.fr/api/auth/sso/<connectionId>/acs Entity ID (SP) : fourni par Levelia à la création de la connexion NameID : email (recommandé) Attributs : email, nom, groupes
Fournissez à Levelia les métadonnées de votre IdP (issuer, URL SSO, certificat de signature). Les assertions sont validées (signature, audience, fenêtre temporelle). La mise en production SAML est validée avec une revue sécurité et un test depuis votre IdP réel.
Provisioning SCIM 2.0
Le provisioning SCIM automatise la création, la mise à jour et le déprovisionnement des utilisateurs et de leurs rôles depuis votre annuaire. Quand SCIM est actif, l'annuaire devient la source d'autorité des affectations.
Base URL SCIM 2.0 : https://app.levelia.fr/api/scim/v2 Authentification : Authorization: Bearer <jeton SCIM> (généré par organisation, affiché une seule fois, haché au repos, révocable) Ressources : /Users, /Groups
Création/mise à jour d'un utilisateur (idempotent). Un active: false déprovisionne : sessions purgées, accès bloqué, données conservées selon la rétention. Une garde empêche de laisser l'organisation sans administrateur actif.
L'état du provisioning est consultable via GET /api/sso/scim/status.
Mapping des groupes vers entités et rôles
Les groupes de votre annuaire sont mappés vers les entités Levelia (filiales, business units) et les rôles. Un recruteur ne voit que les entités auxquelles son rôle donne accès.
// Exemple de mapping
{ "externalGroup": "rh-groupe-france", "entityId": "<entité France>", "role": "admin" }
{ "externalGroup": "rh-filiale-benelux", "entityId": "<entité Benelux>", "role": "member" }
{ "externalGroup": "audit-conformite", "entityId": "<toutes>", "role": "viewer" }
// Rôles : admin | member | viewer (par entité)
// group_admin : administrateur transverse au groupeImposer le SSO
Après avoir vérifié une connexion réelle depuis votre IdP (et contrôlé les rôles et entités visibles), basculez la connexion en mode imposé. L'accès par magic-link est alors désactivé pour l'organisation : l'entrée se fait exclusivement par le SSO.
PATCH /api/sso/connections → state: "enforced"
Sécurité
| Aspect | Garantie |
|---|---|
| Secrets au repos | clientSecret OIDC chiffré (AES-256-GCM) ; jeton SCIM haché (scrypt), jamais en clair. |
| Validation des jetons | Signature, audience et anti-rejeu vérifiés via des bibliothèques éprouvées (jamais de vérification maison). |
| Isolation | Chaque identité scopée à son organisation et à ses entités (Row-Level Security PostgreSQL). |
| Déprovisionnement | Désactivation dans l'annuaire → coupure immédiate ; garde « jamais zéro admin ». |
| Résidence | Identités, sessions et données hébergées en Union européenne (Gravelines). |
| Traçabilité | Création, activation, imposition, révocation et opérations SCIM journalisées (audit). |
Vue d'ensemble non technique : voir la page SSO & identités.