Attesto

Autenticación de tenant

SSO tenant y descubrimiento de identidad

Los usuarios del dashboard tenant inician sesión con un primer paso sencillo: introducir una dirección de correo. Attesto selecciona después la ruta correcta de contraseña, identidad comunitaria, SSO de organización, invitación o signup sin mostrar un muro de botones de enterprise providers. Los community providers configurados también pueden aparecer como botones de conveniencia debajo del formulario email-first, nunca encima, y nunca mezclados con opciones tenant enterprise SSO.

Scope

Esta página cubre main platform users en dashboard.attesto.eu. Marketplace developer accounts, auditor access e internal staff access son superficies de identidad separadas. Un marketplace developer account no entra al tenant dashboard salvo que la misma persona también esté invitada como tenant user.

Email discovery

La página de login comienza con el campo de correo. El backend devuelve el siguiente paso recomendado y, para un nuevo community signup, también puede devolver opciones seguras availableProviders:

User flow

Los usuarios de Enterprise SSO también pueden empezar en auth.attesto.eu. Esa página solo descubre rutas tenant Entra/OIDC/SAML y envía a los usuarios sin SSO al login normal del dashboard.

Un tenant user no elige entre siete providers. Introduce su correo de trabajo, revisa la ruta descubierta y continúa con el método configurado para esa dirección. Si el dominio tenant está controlado por organization SSO, el botón dice “Continue with your organization” o el nombre del provider configurado. Si password fallback sigue permitido, los password users existentes pueden continuar con password.

  1. Abra dashboard.attesto.eu/login.
  2. Introduzca la dirección de correo tenant.
  3. Continúe con la ruta descubierta de password, community identity, invite, signup u organization SSO.
  4. Vuelva al dashboard con la tenant session de Attesto, protección CSRF y role checks intactos.

Tenant owner setup

Los tenant owners configuran enterprise identity providers en Settings → Identity Providers. El asistente guarda secrets server-side, devuelve al navegador solo estado enmascarado y genera valores callback o metadata para el provider externo. El provider setup debe probarse con un user invitado antes de aplicar SSO a un dominio tenant.

ProviderCuándo usarloAttesto necesitaEl provider necesita
Microsoft Entra IDEnterprise workforce loginDomain, issuer, client id, encrypted client secretRedirect URI y users/groups permitidos
Generic OIDCOkta, Keycloak, Ping, Auth0, ForgeRock o custom OIDCDomain, issuer URL, client id, encrypted client secret, scopesRedirect URI y verified email claim
Generic SAMLLegacy enterprise SSO o SAML-only IdPsDomain, IdP entity id, SSO URL, signing certificateSP Entity ID, ACS URL, signed response o assertion

Providers

Los community providers soportan Google, GitHub, GitLab y LinkedIn. Los enterprise providers soportan Microsoft Entra ID, OIDC genérico y SAML genérico. Las opciones enterprise provider no se muestran como un muro público de botones; discovery recomienda la ruta tenant correcta. Los community providers configurados pueden aparecer debajo del formulario de correo como shortcut self-service. El catálogo incluye un flag configured, por lo que providers sin configurar son visibles pero inertes hasta que existan credenciales OAuth reales.

Los community providers son útiles para evaluadores, developers, inversores y consultores. Los enterprise providers son tenant scoped: la coincidencia de dominio determina si un user debe ir a organization SSO. Marketplace developer accounts siguen separados de tenant dashboard identities.

Microsoft Entra ID

Use Microsoft Entra ID cuando un cliente quiera que el acceso al dashboard de Attesto siga su Microsoft workforce identity, Conditional Access, MFA y account lifecycle policies. En Entra, cree una web application registration para Attesto, añada la Attesto redirect URI del asistente del dashboard y cree un client secret. En Attesto, elija Entra e introduzca tenant domain, issuer/authority URL, client id y client secret.

Generic OIDC

Generic OIDC cubre Okta, Keycloak, Ping, Auth0, ForgeRock y otros identity providers compatibles con estándares. El provider debe exponer issuer discovery metadata y signing keys, y devolver un subject estable más verified email claim. Attesto descubre los endpoints authorization, token, userinfo y JWKS desde el issuer cuando está soportado.

Generic SAML

Generic SAML soporta entornos enterprise que usan SAML 2.0 en lugar de OIDC. Attesto expone SP metadata y ACS URLs desde el asistente de tenant settings. El IdP externo debe firmar la response o assertion y enviar un subject estable más email attribute para el tenant user invitado.

Enterprise SSO

Enterprise SSO es tenant scoped. Una configuración de provider vincula un dominio tenant a un provider Entra, OIDC o SAML habilitado. Durante discovery se evalúan primero invite token e identity links existentes, después tenant domain provider rules, y luego password o signup fallback. Esto evita la elección aleatoria de providers y mantiene simple la pantalla de login.

Los tenant owners configuran enterprise SSO en los settings del dashboard bajo Identity Providers. Los providers OIDC y Entra usan issuer metadata, client id, client secret cifrado, redirect allowlists estrictas, PKCE, state, nonce, issuer, audience y verified-email checks. Los providers SAML usan signed responses o assertions, validación de audience y recipient, InResponseTo replay protection y clock skew corta.

El dashboard muestra valores callback generados para que los tenant owners puedan copiarlos al identity provider externo:

OAuth/OIDC callback:
https://auth.attesto.eu/v1/auth/external/callback/{provider_id}

SAML ACS:
https://auth.attesto.eu/v1/auth/saml/acs/{provider_id}

SAML metadata:
https://auth.attesto.eu/v1/auth/saml/metadata/{provider_id}

La documentación pública no documenta internal staff admin procedures. Esta página es para tenant-owned identity configuration y developer integration con los tenant authentication endpoints.

Invites

Invite acceptance usa el mismo discovery model. Si el correo de la invitación pertenece a un dominio tenant con required organization SSO, la invitación puede continuar mediante ese provider. Si no se requiere provider, el user todavía puede establecer password mediante la ruta de invitación existente.

API contract

Estos endpoints son dashboard tenant-auth endpoints. Frontend clients nunca reciben provider secrets.

POST /v1/auth/discover
GET /v1/auth/providers
POST /v1/auth/external/start
GET /v1/auth/external/callback/{provider_id}
POST /v1/auth/saml/acs/{provider_id}
GET /v1/auth/saml/metadata/{provider_id}
{
  "email": "user@company.com",
  "returnTo": "/"
}

Una discovery response indica al frontend qué único siguiente paso renderizar. Provider secrets, client secrets, SAML certificates, tokens y assertions nunca se devuelven al navegador.

{
  "email": "user@company.com",
  "action": "organization_sso",
  "buttonLabel": "Continue with your organization",
  "providerId": "idp_...",
  "providerType": "oidc",
  "allowPassword": false,
  "allowSignup": false,
  "availableProviders": []
}

GET /v1/auth/providers devuelve solo labels non-secret de community providers y estado de configuración para los botones debajo del formulario de correo. POST /v1/auth/external/start puede llamarse solo con providerId para global community signup, pero tenant enterprise providers siempre requieren un discovery result respaldado por email o invite.

Security

External login solo se permite cuando el provider devuelve verified email y la identity puede vincularse a un tenant user existente, una invite aceptada o una signup/trial creation explícita. Provider secrets, SAML private settings, tokens, assertions y raw callbacks se quedan server-side. Audit events registran discovery, provider start, success, failure, provider changes e identity linking sin registrar raw secrets.

ControlQué aplica Attesto
OAuth/OIDC stateLos short-lived state, nonce y PKCE records son single-use.
OIDC token validationIssuer, audience, JWKS signature, nonce y verified email se comprueban.
SAML replay protectionInResponseTo, audience, recipient, signature y clock skew se validan.
Identity linkingSolo verified emails pueden vincularse a users existentes, accepted invites o explicit signup/trial creation.
Secret handlingProvider secrets se cifran server-side y se enmascaran en tenant settings.
Surface separationTenant dashboard users, marketplace developer accounts, auditors e internal staff auth siguen siendo superficies separadas.

Troubleshooting

SíntomaCausa probableSolución
User enviado a password en vez de SSODomain provider disabled, domain mismatch o existing password identity con precedence.Revise tenant domain, provider enabled state y ortografía de invite email.
OIDC callback fallaRedirect URI, issuer, audience, nonce o verified email claim no coincide.Copie exactamente el generated callback y revise issuer/client configuration.
SAML assertion rechazadaUnsigned, expired, replayed, wrong audience, wrong recipient o falta email attribute.Active signed responses/assertions y compare Entity ID, ACS URL y attributes.
Community provider button deshabilitadoEl provider está en el catálogo pero configured es false.Añada el OAuth client id/secret real antes de habilitar esa ruta para users.
User autentica pero no entra en tenantLa external identity no está vinculada a un tenant user invitado o existente.Invite primero al user o use el explicit signup/trial path para un nuevo tenant.

Rollout checklist