Attesto

Tenant authentication

Tenant SSO and Identity Discovery

Dashboard tenant users sign in with one calm first step: enter an email address. Attesto then selects the correct password, community identity, organization SSO, invite, or signup path without showing an enterprise provider wall. Configured community providers may also appear as convenience buttons below the email-first form, never above it, and never mixed with tenant enterprise SSO choices.

Scope

This page covers main platform users on dashboard.attesto.eu. Marketplace developer accounts, auditor access, and internal staff access are separate identity surfaces. A marketplace developer account cannot be used to enter the tenant dashboard unless the same person is also invited as a tenant user.

Email discovery

The login page starts with the email field. The backend returns the recommended next step and, for a brand-new community signup, may also return safe availableProviders options:

User flow

Enterprise SSO users can also start at auth.attesto.eu. That page only discovers tenant Entra/OIDC/SAML routes and sends non-SSO users back to the regular dashboard login.

A tenant user does not choose between seven providers. They enter their work email, review the discovered route, and continue with the method configured for that address. If the tenant domain is controlled by organization SSO, the button says “Continue with your organization” or the configured provider name. If password fallback is still allowed, existing password users can continue with password.

  1. Open dashboard.attesto.eu/login.
  2. Enter the tenant email address.
  3. Continue with the discovered password, community identity, invite, signup, or organization SSO path.
  4. Return to the dashboard with the existing Attesto tenant session, CSRF protection, and role checks intact.

Tenant owner setup

Tenant owners configure enterprise identity providers in Settings → Identity Providers. The wizard stores secrets server-side, shows only masked status back to the browser, and generates callback or metadata values for the external provider. Provider setup should be tested with an invited user before SSO is enforced for a tenant domain.

ProviderUse whenAttesto needsProvider needs
Microsoft Entra IDEnterprise workforce loginDomain, issuer, client id, encrypted client secretRedirect URI and allowed users/groups
Generic OIDCOkta, Keycloak, Ping, Auth0, ForgeRock, or custom OIDCDomain, issuer URL, client id, encrypted client secret, scopesRedirect URI and verified email claim
Generic SAMLLegacy enterprise SSO or SAML-only IdPsDomain, IdP entity id, SSO URL, signing certificateSP Entity ID, ACS URL, signed response or assertion

Providers

Community providers support Google, GitHub, GitLab, and LinkedIn. Enterprise providers support Microsoft Entra ID, generic OIDC, and generic SAML. Enterprise provider choices are not displayed as a public button wall; discovery recommends the matching tenant path. Configured community providers can be shown below the email form as a self-service shortcut. The catalog includes a configured flag, so unconfigured providers are visible but inert until real OAuth credentials exist.

Community providers are useful for evaluators, developers, investors, and consultants. Enterprise providers are tenant scoped: the domain match determines whether a user should be routed to organization SSO. Marketplace developer accounts remain separate from tenant dashboard identities.

Microsoft Entra ID

Use Microsoft Entra ID when a customer wants Attesto dashboard access to follow their Microsoft workforce identity, Conditional Access, MFA, and account lifecycle policies. In Entra, create a web application registration for Attesto, add the Attesto redirect URI from the dashboard wizard, and issue a client secret. In Attesto, choose Entra, enter the tenant domain, issuer/authority URL, client id, and client secret.

Generic OIDC

Generic OIDC covers Okta, Keycloak, Ping, Auth0, ForgeRock, and other standards-compliant identity providers. The provider must expose an issuer with discovery metadata and signing keys, and must return a stable subject plus verified email claim. Attesto discovers authorization, token, userinfo, and JWKS endpoints from the issuer where supported.

Generic SAML

Generic SAML supports enterprise environments that rely on SAML 2.0 rather than OIDC. Attesto exposes SP metadata and ACS URLs from the tenant settings wizard. The external IdP must sign either the response or assertion and must send a stable subject plus email attribute for the invited tenant user.

Enterprise SSO

Enterprise SSO is tenant scoped. A provider configuration binds one tenant domain to one enabled Entra, OIDC, or SAML provider. During discovery, the invite token and existing identity links are evaluated first, then tenant domain provider rules, then password or signup fallback. This prevents random provider choice and keeps the login screen simple.

Tenant owners configure enterprise SSO in dashboard settings under Identity Providers. OIDC and Entra providers use issuer metadata, client id, encrypted client secret, strict redirect allowlists, PKCE, state, nonce, issuer, audience, and verified-email checks. SAML providers use signed responses or assertions, audience and recipient validation, InResponseTo replay protection, and short clock skew.

The dashboard shows generated callback values so tenant owners can copy them into the external identity provider:

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}

Public docs intentionally do not document internal staff admin procedures. This page is for tenant-owned identity configuration and developer integration with the tenant authentication endpoints.

Invites

Invite acceptance uses the same discovery model. If the invite email belongs to a tenant domain with required organization SSO, the invite can continue through that provider. If no provider is required, the user can still set a password through the existing invite path.

API contract

These endpoints are dashboard tenant-auth endpoints. Frontend clients never receive 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": "/"
}

A discovery response tells the frontend which single next step to render. Provider secrets, client secrets, SAML certificates, tokens, and assertions are never returned to the browser.

{
  "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 returns only non-secret community provider labels and configuration state for the buttons below the email form. POST /v1/auth/external/start may be called with only providerId for global community signup, but tenant enterprise providers always require an email or invite-backed discovery result.

Security

External login is allowed only when the provider returns a verified email and the identity can be linked to an existing tenant user, accepted invite, or explicit signup/trial creation. Provider secrets, SAML private settings, tokens, assertions, and raw callbacks stay server-side. Audit events record discovery, provider start, success, failure, provider changes, and identity linking without logging raw secrets.

ControlWhat Attesto enforces
OAuth/OIDC stateShort-lived state, nonce, and PKCE records are single-use.
OIDC token validationIssuer, audience, JWKS signature, nonce, and verified email are checked.
SAML replay protectionInResponseTo, audience, recipient, signature, and clock skew are validated.
Identity linkingOnly verified emails may link to existing users, accepted invites, or explicit signup/trial creation.
Secret handlingProvider secrets are encrypted server-side and masked in tenant settings.
Surface separationTenant dashboard users, marketplace developer accounts, auditors, and internal staff auth remain separate surfaces.

Troubleshooting

SymptomLikely causeFix
User is routed to password instead of SSODomain provider is disabled, domain mismatch, or existing password identity has precedence.Check tenant domain, provider enabled state, and invite email spelling.
OIDC callback failsRedirect URI, issuer, audience, nonce, or verified email claim does not match.Copy the generated callback exactly and verify the issuer/client configuration.
SAML assertion rejectedUnsigned, expired, replayed, wrong audience, wrong recipient, or missing email attribute.Enable signed responses/assertions and compare Entity ID, ACS URL, and attributes.
Community provider button is disabledThe provider is listed in the catalog but configured is false.Add the real OAuth client id/secret before enabling that path for users.
User authenticates but cannot enter tenantThe external identity is not linked to an invited or existing tenant user.Invite the user first or use the explicit signup/trial path for a new tenant.

Rollout checklist