Saltar al contenido principal

SSO SAML 2.0

Autenticación federada mediante SAML 2.0. Permite a los usuarios de una organización acceder al admin de OmniBuy usando sus credenciales corporativas.

Flujo de autenticación​

1. Usuario → GET /sso/saml/login?tenant_id=xxx
2. OmniBuy → Redirect al IdP (Identity Provider)
3. Usuario → Se autentica en el IdP
4. IdP → POST /sso/saml/callback?tenant_id=xxx (con SAMLResponse)
5. OmniBuy → Valida assertion, crea sesión, retorna JWT

Configuración​

POST /api/v1/admin/sso
{
"provider": "okta",
"idp_metadata_xml": "<EntityDescriptor>...</EntityDescriptor>",
"entity_id": "https://app.omnibuy.net/sso/saml/metadata",
"acs_url": "https://app.omnibuy.net/sso/saml/callback",
"attribute_email": "email",
"attribute_role": "role",
"default_role": "staff"
}
CampoTipoRequeridoDescripción
providerstringSíProveedor: okta, azure, google, onelogin, custom
idp_metadata_xmlstringSíXML de metadata del IdP (contiene certificados y endpoints)
entity_idstringSíEntity ID de OmniBuy (SP)
acs_urlstringSíAssertion Consumer Service URL
attribute_emailstringNoNombre del atributo SAML para el email (default: email)
attribute_rolestringNoNombre del atributo SAML para el rol
default_rolestringNoRol por defecto si el IdP no envía rol: owner, admin, staff, viewer

Endpoints​

Obtener configuración​

GET /api/v1/admin/sso

Eliminar configuración​

DELETE /api/v1/admin/sso

Iniciar login SSO (público)​

GET /sso/saml/login?tenant_id=uuid

Redirige al usuario al IdP para autenticación.

Callback SAML (público)​

POST /sso/saml/callback?tenant_id=uuid

Recibe la respuesta SAML del IdP (form-encoded: SAMLResponse, RelayState).

Respuesta exitosa 200 OK:

{
"data": {
"email": "[email protected]",
"name": "Juan Pérez",
"role": "admin",
"tenant_id": "uuid"
}
}

Proveedores soportados​

ProviderConfiguración
oktaCrear SAML App en Okta Admin Console
azureEnterprise Application en Azure AD
googleSAML App en Google Admin Console
oneloginSAML Custom Connector
customCualquier IdP compatible con SAML 2.0

Errores​

CódigoHTTPDescripción
SSO_NOT_CONFIGURED404SSO no configurado para este tenant
SSO_DISABLED403SSO configurado pero deshabilitado
INVALID_METADATA422XML de metadata del IdP inválido
INVALID_ASSERTION401Assertion SAML inválida o expirada
EMAIL_NOT_FOUND422Email no encontrado en la assertion