Enterprise SSO par Organisation
L’Enterprise Single Sign-On (SSO) permet à chaque organisation dans Auris de déléguer l’authentification à son propre fournisseur d’identité d’entreprise. Quand un utilisateur se connecte avec une adresse e-mail appartenant à un domaine vérifié, Auris le redirige automatiquement vers l’IdP de son organisation au lieu de présenter le formulaire standard nom d’utilisateur/mot de passe. Après une authentification réussie auprès de l’IdP, l’utilisateur est retourné à Auris et associé à un compte existant ou provisionné automatiquement via création JIT (Just-in-Time).
Cette fonctionnalité est conçue pour les produits SaaS B2B où les clients enterprise exigent que leurs employés s’authentifient exclusivement via des credentials gérés par l’entreprise.
Protocoles Supportés
Auris supporte deux protocoles SSO, tous deux implémentés via la fonctionnalité de courtier d’identité de Keycloak :
SAML 2.0 — Security Assertion Markup Language. Utilisé par les IdP enterprise incluant Microsoft Azure AD (Entra ID), Okta, ADFS, Ping Identity et Shibboleth. SAML utilise des assertions basées sur XML signées avec des certificats X.509.
OIDC (OpenID Connect) — Une couche d’identité moderne sur OAuth 2.0. Utilisé par Google Workspace, Okta (comme fournisseur OIDC), Microsoft Azure AD (supporte aussi OIDC) et tout Authorization Server OAuth 2.0 avec un endpoint de découverte OIDC.
Vérification du Domaine
Avant qu’une connexion SSO puisse être activée, l’organisation doit prouver la propriété du domaine e-mail. Cela empêche une organisation d’intercepter les connexions pour un domaine qu’elle ne possède pas.
La vérification utilise un enregistrement DNS TXT :
- Auris génère un token de vérification unique pour le domaine.
- L’administrateur DNS de l’organisation crée un enregistrement TXT :
_auris-verify.domaine.comavec le token comme valeur. - Un admin clique “Vérifier” dans la Console (ou appelle l’API de vérification).
- Auris effectue une recherche DNS pour l’enregistrement TXT et confirme que le token correspond.
/api/organizations/[orgId]/sso/domainsRequires: manage:sso_connectionsAjoute un domaine à vérifier pour le SSO. Retourne le token de vérification à ajouter au DNS.
{
"domain": "acme.com"
}Réponse :
{
"id": "dom_01HX...",
"domain": "acme.com",
"verificationToken": "auris-verify=a1b2c3d4e5f6...",
"verificationMethod": "TXT",
"status": "PENDING"
}Enregistrement DNS à créer :
_auris-verify.acme.com TXT "auris-verify=a1b2c3d4e5f6..."/api/organizations/[orgId]/sso/domains/[domainId]/checkRequires: manage:sso_connectionsLance une vérification DNS. Retourne le statut mis à jour du domaine : PENDING, ACTIVE ou FAILED.
La propagation DNS peut prendre jusqu’à 48 heures, bien que la plupart des modifications se propagent en quelques minutes. Si la vérification échoue immédiatement après avoir ajouté l’enregistrement, attends quelques minutes et réessaie.
Configuration SAML 2.0
Obtiens les métadonnées de l’IdP
Depuis l’IdP de ton client, récupère :
- Un Metadata URL — une URL fournissant le metadata XML SAML de l’IdP (préféré, car il met à jour automatiquement les certificats)
- Un fichier XML de metadata — une copie téléchargée du metadata
Le metadata contient l’Entity ID, l’SSO URL et le certificat de signature.
Crée la connexion SSO
/api/organizations/[orgId]/sso/connectionsRequires: manage:sso_connectionsCrée une nouvelle connexion SSO pour l’organisation.
{
"type": "SAML",
"name": "Acme Azure AD",
"config": {
"entityId": "https://sts.windows.net/tenant-id-here/",
"ssoUrl": "https://login.microsoftonline.com/tenant-id/saml2",
"certificate": "MIICIjANBgkq...",
"signRequests": true,
"nameIdFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
}
}Champs de configuration SAML :
| Champ | Obligatoire | Notes |
|---|---|---|
entityId | ✅ | L’Entity ID de l’IdP depuis ses métadonnées |
ssoUrl | ✅ | L’URL de l’endpoint SSO SAML de l’IdP |
certificate | ✅ | Le certificat de signature X.509 de l’IdP (encodé PEM, sans en-têtes) |
signRequests | Non | Si signer les requêtes SAML sortantes (défaut : true) |
nameIdFormat | Non | Format NameID préféré. Défaut : emailAddress |
Configure le mappage des attributs
Mappe les attributs de l’assertion SAML aux champs utilisateur d’Auris :
{
"attributeMapping": {
"email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
"firstName": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
"lastName": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"
}
}Fournis les métadonnées SP d’Auris à l’IdP
Après avoir créé la connexion, Auris génère les métadonnées du Service Provider (SP) que ton client doit enregistrer dans son propre IdP :
- SP Entity ID :
https://auth.votreapp.com/saml/org-slug - ACS URL (Assertion Consumer Service) :
https://auth.votreapp.com/saml/org-slug/callback - SP Metadata URL :
https://auth.votreapp.com/saml/org-slug/metadata
Partage l’URL des métadonnées SP avec l’administrateur IT de ton client. La plupart des IdP enterprise acceptent directement une URL de métadonnées.
Active la connexion
/api/organizations/[orgId]/sso/connections/[id]/activateRequires: manage:sso_connectionsActive la connexion SSO. La vérification du domaine doit être complétée avant l’activation.
Configuration OIDC
Obtiens la configuration OIDC
Depuis le fournisseur OIDC du client, tu as besoin de :
- Discovery URL (préféré) :
https://provider.exemple.com/.well-known/openid-configuration - Ou manuellement : Authorization endpoint, Token endpoint, JWKS URI, Client ID, Client Secret
Crée la connexion SSO
{
"type": "OIDC",
"name": "Acme Google Workspace",
"config": {
"discoveryUrl": "https://accounts.google.com/.well-known/openid-configuration",
"clientId": "123456789-abc.apps.googleusercontent.com",
"clientSecret": "GOCSPX-...",
"scopes": ["openid", "profile", "email"],
"pkce": true
}
}Champs de configuration OIDC :
| Champ | Obligatoire | Notes |
|---|---|---|
discoveryUrl | Recommandé | Endpoint de découverte OIDC. Si fourni, les autres endpoints sont inférés automatiquement |
authorizationUrl | Si pas de discoveryUrl | Endpoint d’autorisation OAuth2 |
tokenUrl | Si pas de discoveryUrl | Endpoint token OAuth2 |
jwksUrl | Si pas de discoveryUrl | Endpoint JWKS pour la vérification du token |
clientId | ✅ | Le Client ID OAuth2 enregistré auprès de l’IdP |
clientSecret | ✅ | Le Client Secret OAuth2 |
scopes | Non | Défaut : ["openid", "profile", "email"] |
pkce | Non | Active PKCE pour le flux OIDC (recommandé, défaut : true) |
Enregistre l’URI de redirection Auris dans l’IdP
Fournis cet URI de redirection lors de l’enregistrement de l’application Auris dans l’IdP du client :
https://auth.votreapp.com/oidc/org-slug/callbackActive la connexion
Comme pour SAML — la vérification du domaine doit être complétée avant l’activation.
Flux de Connexion SSO
Une fois qu’une connexion SSO est active et qu’un domaine est vérifié, le flux de connexion change pour les utilisateurs avec des adresses e-mail correspondantes :
- L’utilisateur saisit son e-mail dans la page Hosted Login d’Auris.
- Auris appelle l’endpoint de détection SSO :
/api/auth/sso/detectAccepte une adresse e-mail et retourne les détails de la connexion SSO s’il existe une connexion active pour le domaine e-mail.
{ "email": "[email protected]" }Réponse quand le SSO est configuré :
{
"ssoRequired": true,
"connectionType": "SAML",
"organizationName": "Acme Corporation",
"loginUrl": "/api/auth/sso/login/acme-azure-ad"
}- Auris redirige l’utilisateur vers l’IdP via :
/api/auth/sso/login/[alias]Initie le flux SSO en redirigeant l’utilisateur vers l’IdP configuré.
-
L’utilisateur s’authentifie auprès de son IdP d’entreprise.
-
L’IdP redirige vers Auris :
/api/auth/sso/callbackReçoit l’assertion SAML ou le code d’autorisation OIDC. Valide la réponse, résout ou crée l’utilisateur Auris et émet des tokens Auris.
- Auris émet son propre access token et refresh token. À partir de ce moment, la session SSO est indépendante — les durées des tokens Auris sont gouvernées par les paramètres Auris, pas par la session de l’IdP.
Provisioning JIT (Just-in-Time)
Si un utilisateur s’authentifie avec succès auprès de l’IdP mais n’a pas de compte Auris existant, Auris en crée un automatiquement lors du callback SSO. C’est appelé le provisioning Just-in-Time.
Le provisioning JIT crée l’utilisateur avec :
- E-mail, firstName et lastName depuis la réponse de l’IdP ou l’assertion SAML
- Appartenance à l’organisation liée à la connexion SSO
- Le rôle par défaut configuré pour les utilisateurs provisionnés JIT (configurable par connexion, défaut : MEMBER)
Le compte de l’utilisateur persiste après la première connexion — les connexions suivantes se résolvent au même compte.
Le provisioning JIT crée les utilisateurs avec le rôle MEMBER par défaut. Si ton application nécessite des rôles élevés pour certains utilisateurs, utilise le provisioning SCIM en complément du SSO pour pré-provisionner les utilisateurs avec les bons rôles avant leur première connexion.
Connexions SSO Multiples par Organisation
Une organisation peut avoir plusieurs connexions SSO actives — par exemple, SAML pour un déploiement Azure AD et OIDC pour un sous-ensemble d’utilisateurs sur Google Workspace.
L’endpoint de détection SSO effectue la correspondance sur la base du domaine e-mail vérifié. Si plusieurs connexions partagent le même domaine, la connexion activée le plus récemment a la priorité. En pratique, chaque connexion SSO devrait être associée à des domaines vérifiés distincts pour éviter toute ambiguïté.
Gestion des Connexions SSO
/api/organizations/[orgId]/sso/connectionsRequires: view:sso_connectionsListe toutes les connexions SSO pour une organisation.
/api/organizations/[orgId]/sso/connections/[id]Requires: view:sso_connectionsObtient une connexion SSO spécifique avec son état actuel et sa configuration.
/api/organizations/[orgId]/sso/connections/[id]Requires: manage:sso_connectionsMet à jour une connexion SSO. Tu peux mettre à jour les champs de configuration, le nom ou les mappages d’attributs sans désactiver la connexion.
/api/organizations/[orgId]/sso/connections/[id]/deactivateRequires: manage:sso_connectionsDésactive la connexion SSO. Les utilisateurs avec des domaines e-mail correspondants ne seront plus redirigés vers l’IdP. Ils reviennent à l’authentification Auris standard.
/api/organizations/[orgId]/sso/connections/[id]Requires: manage:sso_connectionsSupprime définitivement la connexion SSO. Les comptes utilisateur existants créés via provisioning JIT ne sont pas supprimés.
Assistant de Configuration dans la Console
La gestion SSO est disponible sur la page de détail de l’organisation dans la Console Admin, dans l’onglet “Enterprise SSO”.
Ajouter une connexion SAML :
- Navigue vers Console Admin → Organisations → [Nom org] → Enterprise SSO.
- Clique “Ajouter une Connexion SSO”. Sélectionne SAML 2.0.
- Saisis l’URL de métadonnées de l’IdP ou colle le XML.
- Examine la configuration analysée (Entity ID, SSO URL, certificat).
- Sauvegarde. La connexion est créée en état inactif.
- Navigue dans l’onglet “Domaines” et ajoute le domaine e-mail de l’organisation.
- Ajoute l’enregistrement DNS TXT et clique “Vérifier le Domaine”.
- Une fois le domaine vérifié, reviens à l’onglet SSO et clique “Activer”.
Ajouter une connexion OIDC :
Même flux, mais le formulaire demande Discovery URL, Client ID et Client Secret. Auris récupère automatiquement le document de découverte et remplit les champs restants.
Permissions Requises
| Opération | Permission |
|---|---|
| Voir les connexions SSO | view:sso_connections |
| Créer / mettre à jour / supprimer des connexions SSO | manage:sso_connections |
| Gérer la vérification du domaine | manage:sso_connections |
Pages Associées
- Organisations B2B Multi-Tenant — Configuration de l’organisation, rôles des membres et invitations
- Provisioning SCIM 2.0 — Provisioning automatique des utilisateurs pour compléter le SSO
- Hosted Login — Comment la page Hosted Login s’intègre avec la détection SSO
- Console : Organisations — Guide complet de la Console