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
providerstringProveedor: okta, azure, google, onelogin, custom
idp_metadata_xmlstringXML de metadata del IdP (contiene certificados y endpoints)
entity_idstringEntity ID de OmniBuy (SP)
acs_urlstringAssertion 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