Référence APIConfigurer le provider SSO SAML du workspace
POST/v1/workspace/sso/providers

Configurer le provider SSO SAML du workspace

Crée ou reconfigure le provider SSO SAML du workspace courant à partir de métadonnées IdP et d'une liste de domaines.

2 min de lectureTélécharger en PDF

Requête exemple

{
"domains": [
"acme-corp.com",
"acme.fr"
],
"metadata_url": "https://login.acme-corp.com/saml/metadata"
}

Réponse exemple

{
"ok": true,
"domains": [
"acme-corp.com",
"acme.fr"
],
"provider_id": "b1d4e8a2-7c9f-4a31-9e10-5d2c0f6a8b44"
}
POST/v1/workspace/sso/providersCrée ou remplace le provider SAML du workspace via la Supabase Management API, puis trace la config localement.

Ce point d'accès configure l'authentification unique SAML pour le workspace actif. Le handler accepte des métadonnées IdP (XML inline ou URL) et une liste de domaines email à associer. Il s'agit d'une opération idempotente par remplacement : si un provider existe déjà pour ce workspace, il est d'abord supprimé côté Supabase avant d'en créer un nouveau, puis la ligne locale coffrify_sso_configs est mise à jour par upsert (clé de conflit workspace_id).

Le flux complet est : validation des domaines, contrôle d'unicité cross-workspace, suppression de l'éventuel provider précédent, création via la Supabase Management API, upsert local, puis écriture d'une entrée d'audit (sso.provider_created). En cas d'échec de l'upsert local après création, le provider Supabase fraîchement créé fait l'objet d'un rollback best-effort.

Authentification

Requiert une session utilisateur valide (cookie d'authentification Supabase, via requireUser). Aucun scope spécifique n'est requis, mais deux conditions sont imposées : l'utilisateur doit être owner du workspace, et le workspace doit être sur le plan Entreprise (entreprise ou enterprise). À défaut, l'appel renvoie respectivement 403 ou 402.

Corps de la requête

Corps JSON. Au moins un des deux champs de métadonnées (metadata_xml ou metadata_url) est obligatoire, ainsi qu'au moins un domaine valide.

ChampTypeRequisDescription
metadata_xmlstringConditionnelMétadonnées SAML de l'IdP en XML inline. Requis si metadata_url est absent. Espaces de tête/fin supprimés.
metadata_urlstringConditionnelURL des métadonnées SAML de l'IdP. Requis si metadata_xml est absent. Stockée comme idp_metadata_url.
domainsstring[]OuiListe des domaines email rattachés au SSO. Normalisés en minuscules, trim, vides ignorés. Au moins un domaine valide requis (format RFC 1035 simplifié).

Réponse

En cas de succès (200), la réponse confirme la création et renvoie l'identifiant du provider Supabase ainsi que la liste normalisée des domaines retenus :

ChampTypeDescription
okbooleanToujours true en cas de succès.
provider_idstringIdentifiant du provider SSO créé côté Supabase (Management API).
domainsstring[]Liste finale des domaines associés (normalisés en minuscules).

Erreurs

CodeQuandRésolution
400Ni metadata_xml ni metadata_url fourni, aucun domaine, ou domaine au format invalide.Fournissez des métadonnées IdP et au moins un domaine valide (exemple.com).
401Aucune session utilisateur valide.Authentifiez-vous et réessayez.
402Le workspace n'est pas sur le plan Entreprise (SSO réservé au plan Entreprise).Passez le workspace au plan Entreprise avant de configurer le SSO.
403L'utilisateur n'est owner d'aucun workspace.Utilisez un compte owner du workspace cible.
409Un des domaines est déjà réclamé par un autre workspace.Choisissez des domaines non utilisés ailleurs, ou faites libérer le domaine par le workspace propriétaire.
500Échec de l'upsert local après création (rollback du provider Supabase tenté).Réessayez ; si l'erreur persiste, vérifiez l'intégrité de coffrify_sso_configs.
502Échec de la création du provider côté Supabase Management API (Échec création provider Supabase).Vérifiez la validité des métadonnées IdP et la disponibilité de l'API Supabase, puis réessayez.

Voir aussi

  • GET /v1/workspace/sso/providers : lire l'état courant et vérifier la synchronisation avec Supabase.
  • GET /v1/workspace/audit-log : retrouver l'entrée sso.provider_created générée par cette opération.
  • GET /v1/workspace : confirmer l'éligibilité au plan Entreprise avant configuration.