API Enterprise SSO
L’Enterprise SSO (Single Sign-On) permet aux membres de l’organisation de s’authentifier en utilisant leur identity provider d’entreprise existant plutôt qu’un nom d’utilisateur et un mot de passe. Auris supporte à la fois le protocole SAML 2.0 et OIDC, basés sur le brokering IdP de Keycloak.
Le flux SSO fonctionne ainsi :
- Un admin crée une connexion SSO pour une organisation, en fournissant la configuration IdP (métadonnées SAML ou URL de discovery OIDC).
- L’admin ajoute et vérifie un ou plusieurs domaines email (ex.
acme-corp.com) via des enregistrements DNS TXT. - Une fois la connexion activée, les utilisateurs avec un email de domaine vérifié sont automatiquement redirigés vers l’IdP à la connexion.
- Lors de la première connexion SSO, Auris effectue le provisionnement JIT (Just-In-Time) — crée le compte utilisateur, le lie à l’organisation et émet les tokens Auris, le tout de manière transparente.
Tous les endpoints SSO admin requièrent l’en-tête x-tenant et un token Bearer valide.
Connexions SSO
/api/organizations/[orgId]/sso/connectionsRequires: view:sso_connectionsListe toutes les connexions SSO configurées pour une organisation. Retourne les métadonnées de la connexion, le type, l’état et les domaines vérifiés associés.
Réponse de succès
{
"ok": true,
"data": [
{
"id": "sso_abc123",
"type": "saml",
"name": "Acme Corporate IdP",
"status": "ACTIVE",
"keycloakIdpAlias": "acme-saml-abc123",
"domains": ["acme-corp.com", "acme.io"],
"createdAt": "2025-01-20T09:00:00Z",
"updatedAt": "2025-02-01T14:30:00Z"
}
]
}États de la connexion SSO :
| État | Description |
|---|---|
PENDING | Connexion créée mais pas encore activée |
ACTIVE | Connexion active — les utilisateurs avec email de domaine vérifié sont redirigés |
DISABLED | Connexion désactivée par un admin |
ERROR | La connexion a rencontré une erreur de configuration lors de la communication IdP |
/api/organizations/[orgId]/sso/connectionsRequires: manage:sso_connectionsCrée une nouvelle connexion SSO pour l’organisation. Auris enregistre un Identity Provider correspondant dans Keycloak et retourne les métadonnées du Service Provider nécessaires pour configurer l’IdP côté client.
Configuration SAML 2.0
Pour SSO basé sur SAML, fournis les métadonnées de l’Identity Provider. Tu peux fournir un metadataUrl (recommandé — Auris le récupère et l’analyse automatiquement) ou fournir les champs individuels manuellement.
Corps de la requête — SAML avec URL de métadonnées
{
"type": "saml",
"name": "Acme Corporate SAML",
"config": {
"metadataUrl": "https://idp.acme-corp.com/federationmetadata/2007-06/federationmetadata.xml"
}
}Corps de la requête — SAML avec configuration manuelle
{
"type": "saml",
"name": "Acme Corporate SAML",
"config": {
"entityId": "https://idp.acme-corp.com",
"ssoUrl": "https://idp.acme-corp.com/saml2/sso",
"certificate": "-----BEGIN CERTIFICATE-----\nMIIDpDCCAoygAwIBAgIGAX...\n-----END CERTIFICATE-----"
}
}| Champ | Obligatoire | Description |
|---|---|---|
metadataUrl | Non | URL vers les métadonnées SAML XML de l’IdP. Si fourni, entityId, ssoUrl et certificate sont extraits automatiquement. |
entityId | Oui* | L’Entity ID de l’IdP (Issuer). Obligatoire si metadataUrl n’est pas fourni. |
ssoUrl | Oui* | L’URL du Single Sign-On Service de l’IdP (binding HTTP-Redirect). |
certificate | Oui* | Le certificat X.509 de signature de l’IdP au format PEM. |
Configuration OIDC
Corps de la requête — OIDC
{
"type": "oidc",
"name": "Acme OIDC Provider",
"config": {
"discoveryUrl": "https://login.acme-corp.com/.well-known/openid-configuration",
"clientId": "auris-sp-client-id",
"clientSecret": "auris-sp-client-secret"
}
}| Champ | Obligatoire | Description |
|---|---|---|
discoveryUrl | Oui | L’URL OIDC Discovery de l’IdP. |
clientId | Oui | Le Client ID enregistré auprès de l’IdP pour Auris en tant que relying party. |
clientSecret | Oui | Le Client Secret pour l’enregistrement relying party. |
Réponse de succès
{
"ok": true,
"data": {
"id": "sso_def456",
"type": "saml",
"name": "Acme Corporate SAML",
"status": "PENDING",
"keycloakIdpAlias": "acme-saml-def456",
"acsUrl": "https://api.altovar.net/api/auth/sso/callback",
"entityId": "https://api.altovar.net",
"createdAt": "2025-02-18T10:00:00Z"
}
}Les valeurs acsUrl (Assertion Consumer Service URL) et entityId dans la réponse sont les valeurs du Service Provider qui doivent être configurées dans l’Identity Provider du client. Pour SAML, définis l’ACS URL comme reply URL et l’entity ID d’Auris comme audience. Pour OIDC, enregistre l’acsUrl comme redirect URI auprès de l’IdP.
Codes d’erreur
| Code | HTTP | Description |
|---|---|---|
VALIDATION_ERROR | 400 | Champs obligatoires manquants ou configuration invalide |
METADATA_FETCH_FAILED | 400 | Impossible de récupérer ou analyser l’URL des métadonnées SAML |
DISCOVERY_FETCH_FAILED | 400 | Impossible de récupérer ou analyser le document de discovery OIDC |
SSO_CONNECTION_EXISTS | 409 | Une connexion SSO de ce type existe déjà pour l’organisation |
/api/organizations/[orgId]/sso/connections/[id]Requires: manage:sso_connectionsSupprime une connexion SSO. L’Identity Provider Keycloak correspondant est supprimé. Les utilisateurs qui s’authentifiaient via cette connexion reviendront à la connexion par mot de passe. Leurs comptes et données sont conservés.
La suppression d’une connexion SSO active affecte immédiatement tous les utilisateurs qui s’authentifient via celle-ci. Ils devront réinitialiser leur mot de passe (via le flux mot de passe oublié) s’ils n’en ont jamais défini un, car les utilisateurs SSO sont provisionnés via JIT sans mot de passe.
Activer et Désactiver
/api/organizations/[orgId]/sso/connections/[id]/activateRequires: manage:sso_connectionsActive une connexion SSO PENDING ou DISABLED. Après l’activation, les utilisateurs qui se connectent avec un email de domaine vérifié sont automatiquement redirigés vers l’Identity Provider. L’activation nécessite au moins un domaine vérifié associé à l’organisation.
Codes d’erreur
| Code | HTTP | Description |
|---|---|---|
NO_VERIFIED_DOMAINS | 400 | Impossible d’activer SSO sans au moins un domaine vérifié |
CONNECTION_NOT_FOUND | 404 | La connexion SSO n’existe pas |
/api/organizations/[orgId]/sso/connections/[id]/deactivateRequires: manage:sso_connectionsDésactive une connexion SSO active. Les utilisateurs avec email de domaine reviendront à l’authentification standard par mot de passe. La configuration de la connexion est conservée et peut être réactivée ultérieurement.
Vérification de Domaine
La vérification de domaine prouve que tu contrôles un domaine email avant d’activer la redirection automatique SSO pour ce domaine. La vérification se fait via un enregistrement DNS (TXT ou CNAME). Une fois un domaine vérifié, tout utilisateur se connectant avec une adresse email sur ce domaine est automatiquement redirigé vers le provider SSO de l’organisation.
/api/organizations/[orgId]/sso/domainsRequires: view:sso_connectionsListe tous les domaines associés à la configuration SSO d’une organisation, incluant l’état de vérification, la méthode et le token.
Réponse de succès
{
"ok": true,
"data": [
{
"id": "dom_abc123",
"domain": "acme-corp.com",
"status": "ACTIVE",
"verificationMethod": "TXT",
"verificationToken": "auris-verify-abc123def456",
"verifiedAt": "2025-01-22T14:00:00Z",
"createdAt": "2025-01-20T10:00:00Z"
}
]
}États de vérification du domaine :
| État | Description |
|---|---|
PENDING | Domaine ajouté, enregistrement DNS pas encore vérifié |
VERIFYING | Vérification en cours |
ACTIVE | Domaine vérifié — la redirection automatique SSO est active pour ce domaine |
FAILED | La vérification a été effectuée mais l’enregistrement DNS attendu n’a pas été trouvé |
/api/organizations/[orgId]/sso/domainsRequires: manage:sso_connectionsAjoute un domaine à l’organisation et lance la vérification. Auris génère un token de vérification unique à ajouter comme enregistrement DNS. La réponse inclut l’enregistrement DNS à créer.
Corps de la requête
{
"domain": "acme-corp.com"
}Réponse de succès
{
"ok": true,
"data": {
"id": "dom_ghi789",
"domain": "acme-corp.com",
"status": "PENDING",
"verificationMethod": "TXT",
"verificationToken": "auris-verify-mno345pqr678",
"dnsRecord": {
"type": "TXT",
"host": "_auris-verify.acme-corp.com",
"value": "auris-verify-mno345pqr678"
}
}
}Codes d’erreur
| Code | HTTP | Description |
|---|---|---|
DOMAIN_TAKEN | 409 | Ce domaine est déjà enregistré pour une autre organisation |
VALIDATION_ERROR | 400 | Format de domaine invalide |
DOMAIN_EXISTS | 409 | Ce domaine est déjà associé à cette organisation |
/api/organizations/[orgId]/sso/domains/[id]/checkRequires: manage:sso_connectionsLance une recherche DNS en temps réel pour vérifier le domaine. Auris effectue une requête DNS TXT (ou CNAME) et contrôle le token de vérification. Retourne immédiatement l’état mis à jour.
La propagation DNS se termine généralement en quelques minutes mais dans de rares cas peut prendre jusqu’à 48 heures. Tu peux appeler l’endpoint de vérification de manière répétée jusqu’à ce que l’état passe à ACTIVE.
Endpoints SSO Publics
Ces endpoints sont utilisés par la page de connexion hébergée d’Auris et le SDK pour exécuter le flux SSO. Ils ne requièrent pas d’authentification.
/api/auth/sso/detectDétecte si le domaine email d’un utilisateur a une connexion Enterprise SSO active. Utilise-le pour construire des formulaires de connexion “intelligents” qui redirigent automatiquement les utilisateurs enterprise vers leur provider SSO au lieu d’afficher le champ mot de passe.
Corps de la requête
{
"email": "[email protected]"
}Réponse — SSO disponible
{
"ok": true,
"data": {
"ssoAvailable": true,
"provider": "saml",
"loginUrl": "https://api.altovar.net/api/auth/sso/login/acme-saml-abc123"
}
}Réponse — aucun SSO
{
"ok": true,
"data": {
"ssoAvailable": false,
"provider": null,
"loginUrl": null
}
}La réponse est toujours 200 OK quelle que soit la configuration SSO du domaine, pour prévenir la divulgation d’informations sur quelles organisations utilisent SSO.
/api/auth/sso/login/[alias]Lance le flux de connexion SSO. Redirige le navigateur vers la page de connexion de l’Identity
Provider configuré. L’alias est l’alias IdP Keycloak retourné lors de la création de la
connexion SSO (champ keycloakIdpAlias).
Cet endpoint est une redirection navigateur, pas un appel API. Le flux typique :
- Le client détecte SSO via
POST /api/auth/sso/detect - Le client redirige le navigateur vers le
loginUrlde la réponse de détection - Auris redirige vers la page de connexion de l’IdP
- L’utilisateur s’authentifie auprès de l’IdP
- L’IdP redirige vers le callback d’Auris
- Auris émet les tokens et redirige vers l’URL callback de l’application
Provisionnement JIT (Just-In-Time)
Lorsqu’un utilisateur s’authentifie via SSO pour la première fois et n’a pas encore de compte Auris, Auris automatiquement :
- Crée un nouveau compte utilisateur en utilisant les attributs de l’assertion SSO (email, prénom, nom)
- Lie l’utilisateur à l’organisation propriétaire de la connexion SSO
- Assigne le rôle membre par défaut (
MEMBER) - Émet des tokens d’accès et de rafraîchissement Auris standard
Lors des connexions suivantes, l’enregistrement utilisateur existant est mis en correspondance par email et les tokens sont émis directement.
Gestion des Erreurs
Si l’assertion SSO n’est pas valide, l’utilisateur est redirigé vers le callback avec des paramètres d’erreur :
https://app.votredomaine.com/callback?error=sso_failed&error_description=SAML+assertion+validation+failed&state=original_state| Erreur | Description |
|---|---|
sso_failed | L’assertion SSO ne peut pas être validée |
sso_connection_disabled | La connexion SSO a été désactivée |
sso_connection_not_found | L’alias IdP ne correspond à aucune connexion SSO configurée |
email_mismatch | L’email de l’assertion SSO ne correspond pas à un domaine vérifié |
Référence des Permissions
| Permission | Description |
|---|---|
view:sso_connections | Consulter les connexions SSO et l’état de vérification des domaines |
manage:sso_connections | Créer, mettre à jour, supprimer, activer et désactiver les connexions SSO ; gérer la vérification des domaines |
Notes d’Implémentation
Brokering IdP Keycloak : Auris crée et gère les configurations d’Identity Provider Keycloak. Chaque connexion SSO correspond à un IdP Keycloak avec un alias unique.
Rotation des Certificats : Pour les connexions SAML, mets à jour le champ certificate dans la configuration de la connexion lorsque l’IdP fait tourner son certificat de signature. Auris ne détecte pas automatiquement les changements de certificat.
Cache Discovery OIDC : Lors de l’utilisation d’OIDC, Auris met en cache le document de discovery. Le cache expire après environ 1 heure.
Corrélés
- Guide Enterprise SSO — Configuration des connexions SAML 2.0 et OIDC
- Single Sign-On — Procédure d’intégration SSO
- Enterprise SSO — Configure les connexions SSO depuis la Console
- API Organisations — Endpoints des organisations auxquelles appartiennent les connexions SSO