Skip to Content

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 :

  1. Un admin crée une connexion SSO pour une organisation, en fournissant la configuration IdP (métadonnées SAML ou URL de discovery OIDC).
  2. L’admin ajoute et vérifie un ou plusieurs domaines email (ex. acme-corp.com) via des enregistrements DNS TXT.
  3. Une fois la connexion activée, les utilisateurs avec un email de domaine vérifié sont automatiquement redirigés vers l’IdP à la connexion.
  4. 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

GET/api/organizations/[orgId]/sso/connectionsRequires: view:sso_connections

Liste 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 :

ÉtatDescription
PENDINGConnexion créée mais pas encore activée
ACTIVEConnexion active — les utilisateurs avec email de domaine vérifié sont redirigés
DISABLEDConnexion désactivée par un admin
ERRORLa connexion a rencontré une erreur de configuration lors de la communication IdP
POST/api/organizations/[orgId]/sso/connectionsRequires: manage:sso_connections

Cré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-----" } }
ChampObligatoireDescription
metadataUrlNonURL vers les métadonnées SAML XML de l’IdP. Si fourni, entityId, ssoUrl et certificate sont extraits automatiquement.
entityIdOui*L’Entity ID de l’IdP (Issuer). Obligatoire si metadataUrl n’est pas fourni.
ssoUrlOui*L’URL du Single Sign-On Service de l’IdP (binding HTTP-Redirect).
certificateOui*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" } }
ChampObligatoireDescription
discoveryUrlOuiL’URL OIDC Discovery de l’IdP.
clientIdOuiLe Client ID enregistré auprès de l’IdP pour Auris en tant que relying party.
clientSecretOuiLe 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

CodeHTTPDescription
VALIDATION_ERROR400Champs obligatoires manquants ou configuration invalide
METADATA_FETCH_FAILED400Impossible de récupérer ou analyser l’URL des métadonnées SAML
DISCOVERY_FETCH_FAILED400Impossible de récupérer ou analyser le document de discovery OIDC
SSO_CONNECTION_EXISTS409Une connexion SSO de ce type existe déjà pour l’organisation
DELETE/api/organizations/[orgId]/sso/connections/[id]Requires: manage:sso_connections

Supprime 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

POST/api/organizations/[orgId]/sso/connections/[id]/activateRequires: manage:sso_connections

Active 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

CodeHTTPDescription
NO_VERIFIED_DOMAINS400Impossible d’activer SSO sans au moins un domaine vérifié
CONNECTION_NOT_FOUND404La connexion SSO n’existe pas
POST/api/organizations/[orgId]/sso/connections/[id]/deactivateRequires: manage:sso_connections

Dé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.

GET/api/organizations/[orgId]/sso/domainsRequires: view:sso_connections

Liste 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 :

ÉtatDescription
PENDINGDomaine ajouté, enregistrement DNS pas encore vérifié
VERIFYINGVérification en cours
ACTIVEDomaine vérifié — la redirection automatique SSO est active pour ce domaine
FAILEDLa vérification a été effectuée mais l’enregistrement DNS attendu n’a pas été trouvé
POST/api/organizations/[orgId]/sso/domainsRequires: manage:sso_connections

Ajoute 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

CodeHTTPDescription
DOMAIN_TAKEN409Ce domaine est déjà enregistré pour une autre organisation
VALIDATION_ERROR400Format de domaine invalide
DOMAIN_EXISTS409Ce domaine est déjà associé à cette organisation
POST/api/organizations/[orgId]/sso/domains/[id]/checkRequires: manage:sso_connections

Lance 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.

POST/api/auth/sso/detect

Dé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.

GET/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 :

  1. Le client détecte SSO via POST /api/auth/sso/detect
  2. Le client redirige le navigateur vers le loginUrl de la réponse de détection
  3. Auris redirige vers la page de connexion de l’IdP
  4. L’utilisateur s’authentifie auprès de l’IdP
  5. L’IdP redirige vers le callback d’Auris
  6. 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 :

  1. Crée un nouveau compte utilisateur en utilisant les attributs de l’assertion SSO (email, prénom, nom)
  2. Lie l’utilisateur à l’organisation propriétaire de la connexion SSO
  3. Assigne le rôle membre par défaut (MEMBER)
  4. É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
ErreurDescription
sso_failedL’assertion SSO ne peut pas être validée
sso_connection_disabledLa connexion SSO a été désactivée
sso_connection_not_foundL’alias IdP ne correspond à aucune connexion SSO configurée
email_mismatchL’email de l’assertion SSO ne correspond pas à un domaine vérifié

Référence des Permissions

PermissionDescription
view:sso_connectionsConsulter les connexions SSO et l’état de vérification des domaines
manage:sso_connectionsCré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