Tenant-authenticatie
Tenant SSO en identity discovery
Dashboard tenant users loggen in met één rustige eerste stap: een e-mailadres invoeren. Attesto kiest daarna het juiste password-, community identity-, organisatie-SSO-, invite- of signup-pad zonder een enterprise provider wall te tonen. Geconfigureerde community providers kunnen ook als convenience buttons onder het email-first formulier verschijnen, nooit erboven, en nooit gemengd met tenant enterprise SSO-keuzes.
Scope
Deze pagina behandelt main platform users op dashboard.attesto.eu. Marketplace developer accounts, auditor access en interne staff access zijn aparte identity-surfaces. Een marketplace developer account geeft geen toegang tot het tenant dashboard, tenzij dezelfde persoon ook als tenant user is uitgenodigd.
Email discovery
De loginpagina start met het e-mailveld. De backend geeft de
aanbevolen volgende stap terug en kan voor een nieuwe community signup
ook veilige availableProviders-opties teruggeven:
- Password fallback voor bestaande password users.
- Community identity wanneer een bestaande user gekoppeld is aan Google, GitHub, GitLab of LinkedIn.
- Organization SSO wanneer het e-maildomein matcht met een ingeschakelde tenant provider.
- Invite activation wanneer een invite token aanwezig is.
- Signup of trial onboarding voor onbekende e-mailadressen.
User flow
Enterprise SSO-gebruikers kunnen ook starten op auth.attesto.eu. Die pagina ontdekt alleen tenant Entra/OIDC/SAML-routes en stuurt niet-SSO-gebruikers terug naar de reguliere dashboardlogin.
Een tenant user hoeft niet tussen zeven providers te kiezen. De user voert het werk-e-mailadres in, ziet het ontdekte pad en gaat verder met de methode die voor dat adres is geconfigureerd. Als het tenantdomein door organisatie-SSO wordt beheerd, toont de knop “Continue with your organization” of de ingestelde providernaam. Als password fallback nog is toegestaan, kunnen bestaande password users met password doorgaan.
- Open dashboard.attesto.eu/login.
- Voer het tenant e-mailadres in.
- Ga verder met het ontdekte password-, community identity-, invite-, signup- of organisatie-SSO-pad.
- Keer terug naar het dashboard met de bestaande Attesto tenant session, CSRF-bescherming en role checks intact.
Tenant owner setup
Tenant owners configureren enterprise identity providers in Settings → Identity Providers. De wizard bewaart secrets server-side, toont alleen masked status terug aan de browser en genereert callback- of metadatawaarden voor de externe provider. Provider setup moet met een uitgenodigde user worden getest voordat SSO voor een tenantdomein wordt afgedwongen.
| Provider | Gebruik wanneer | Attesto heeft nodig | Provider heeft nodig |
|---|---|---|---|
| Microsoft Entra ID | Enterprise workforce login | Domain, issuer, client id, encrypted client secret | Redirect URI en toegestane users/groups |
| Generic OIDC | Okta, Keycloak, Ping, Auth0, ForgeRock of custom OIDC | Domain, issuer URL, client id, encrypted client secret, scopes | Redirect URI en verified email claim |
| Generic SAML | Legacy enterprise SSO of SAML-only IdPs | Domain, IdP entity id, SSO URL, signing certificate | SP Entity ID, ACS URL, signed response of assertion |
Providers
Community providers ondersteunen Google, GitHub, GitLab en LinkedIn.
Enterprise providers ondersteunen Microsoft Entra ID, generieke OIDC
en generieke SAML. Enterprise providerkeuzes worden niet als publieke
button wall getoond; discovery beveelt het passende tenantpad aan.
Geconfigureerde community providers kunnen onder het e-mailformulier
als self-service shortcut worden getoond. De catalogus bevat een
configured-flag, zodat niet-geconfigureerde providers
zichtbaar maar inert zijn totdat echte OAuth-credentials bestaan.
Community providers zijn nuttig voor evaluators, developers, investeerders en consultants. Enterprise providers zijn tenant scoped: de domeinmatch bepaalt of een user naar organization SSO wordt gestuurd. Marketplace developer accounts blijven gescheiden van tenant dashboard identities.
Microsoft Entra ID
Gebruik Microsoft Entra ID wanneer een klant Attesto dashboard access wil laten volgen uit Microsoft workforce identity, Conditional Access, MFA en account lifecycle policies. Maak in Entra een web application registration voor Attesto, voeg de Attesto redirect URI uit de dashboard wizard toe en maak een client secret. Kies in Attesto Entra en vul tenant domain, issuer/authority URL, client id en client secret in.
- Het redirect type is web/confidential, niet public SPA.
- Scopes moeten OpenID Connect identity claims bevatten zoals
openid,emailenprofile. - Attesto vereist een verified email en controleert issuer, audience, nonce, state en PKCE.
- Gebruik Conditional Access en MFA policies in Entra voor enterprise assurance.
Generic OIDC
Generic OIDC dekt Okta, Keycloak, Ping, Auth0, ForgeRock en andere standards-compliant identity providers. De provider moet issuer discovery metadata en signing keys aanbieden, en een stabiele subject plus verified email claim teruggeven. Attesto ontdekt authorization, token, userinfo en JWKS endpoints uit de issuer waar dat ondersteund wordt.
- Maak een confidential/web OIDC app in de identity provider.
- Plak de dashboard-generated callback URL in de provider.
- Configureer allowed scopes, meestal
openid email profile. - Sla issuer URL, client id en client secret op in Attesto tenant settings.
- Draai één echte login met een uitgenodigde user voordat strict tenant policy wordt ingeschakeld.
Generic SAML
Generic SAML ondersteunt enterprise omgevingen die op SAML 2.0 leunen in plaats van OIDC. Attesto toont SP metadata en ACS URLs vanuit de tenant settings wizard. De externe IdP moet de response of assertion signen en een stabiele subject plus email attribute voor de uitgenodigde tenant user meesturen.
- Kopieer Attesto SP metadata of voer Entity ID en ACS URL handmatig in de IdP in.
- Kopieer IdP Entity ID, SSO URL en signing certificate terug naar Attesto.
- Houd assertions kort geldig en neem audience, recipient en InResponseTo values op.
- Reject unsigned, expired, replayed, wrong-audience of wrong-recipient assertions.
Enterprise SSO
Enterprise SSO is tenant scoped. Een providerconfiguratie bindt één tenantdomein aan één ingeschakelde Entra-, OIDC- of SAML-provider. Tijdens discovery worden invite token en bestaande identity links eerst geëvalueerd, daarna tenant domain provider rules, daarna password of signup fallback. Zo wordt willekeurige providerkeuze voorkomen en blijft de login rustig.
Tenant owners configureren enterprise SSO in dashboard settings onder Identity Providers. OIDC- en Entra-providers gebruiken issuer metadata, client id, versleutelde client secret, strikte redirect allowlists, PKCE, state, nonce, issuer, audience en verified-email checks. SAML-providers gebruiken signed responses of assertions, audience- en recipient-validatie, InResponseTo replay protection en korte clock skew.
Het dashboard toont gegenereerde callbackwaarden zodat tenant owners ze in de externe identity provider kunnen kopiëren:
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}
Publieke docs documenteren bewust geen interne staff admin procedures. Deze pagina is bedoeld voor tenant-owned identity configuration en developer integration met de tenant authentication endpoints.
Invites
Invite acceptance gebruikt hetzelfde discovery-model. Als het invite e-mailadres hoort bij een tenantdomein met verplichte organisatie-SSO, kan de invite via die provider verdergaan. Als geen provider vereist is, kan de user nog steeds via het bestaande invitepad een password instellen.
API contract
Deze endpoints zijn dashboard tenant-auth endpoints. Frontend clients ontvangen nooit 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": "/"
}
Een discovery response vertelt de frontend welke ene volgende stap moet worden gerenderd. Provider secrets, client secrets, SAML certificates, tokens en assertions worden nooit aan de browser teruggegeven.
{
"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 retourneert alleen non-secret
community provider labels en configuratiestatus voor de knoppen onder
het e-mailformulier. POST /v1/auth/external/start mag
met alleen providerId worden aangeroepen voor global
community signup, maar tenant enterprise providers vereisen altijd een
e-mail- of invite-backed discovery result.
Security
External login is alleen toegestaan wanneer de provider een verified email teruggeeft en de identity gekoppeld kan worden aan een bestaande tenant user, geaccepteerde invite of expliciete signup/trial creation. Provider secrets, SAML private settings, tokens, assertions en raw callbacks blijven server-side. Audit events registreren discovery, provider start, success, failure, provider changes en identity linking zonder raw secrets te loggen.
| Control | Wat Attesto afdwingt |
|---|---|
| OAuth/OIDC state | Short-lived state, nonce en PKCE records zijn single-use. |
| OIDC token validation | Issuer, audience, JWKS signature, nonce en verified email worden gecontroleerd. |
| SAML replay protection | InResponseTo, audience, recipient, signature en clock skew worden gevalideerd. |
| Identity linking | Alleen verified emails mogen linken aan bestaande users, geaccepteerde invites of expliciete signup/trial creation. |
| Secret handling | Provider secrets worden server-side versleuteld en masked in tenant settings. |
| Surface separation | Tenant dashboard users, marketplace developer accounts, auditors en internal staff auth blijven gescheiden surfaces. |
Troubleshooting
| Symptoom | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
| User wordt naar password gestuurd in plaats van SSO | Domain provider is disabled, domain mismatch of bestaande password identity heeft precedence. | Controleer tenant domain, provider enabled state en spelling van invite email. |
| OIDC callback faalt | Redirect URI, issuer, audience, nonce of verified email claim matcht niet. | Kopieer de generated callback exact en controleer issuer/client configuration. |
| SAML assertion wordt geweigerd | Unsigned, expired, replayed, wrong audience, wrong recipient of ontbrekend email attribute. | Zet signed responses/assertions aan en vergelijk Entity ID, ACS URL en attributes. |
| Community provider button is disabled | De provider staat in de catalogus, maar configured is false. | Voeg de echte OAuth client id/secret toe voordat je dat pad voor users inschakelt. |
| User authenticeert maar komt tenant niet binnen | De external identity is niet gekoppeld aan een uitgenodigde of bestaande tenant user. | Nodig de user eerst uit of gebruik het expliciete signup/trial path voor een nieuwe tenant. |
Rollout checklist
- Configureer het provider domain en issuer values in tenant settings.
- Kopieer de gegenereerde callback-, ACS- of metadata-URL naar de externe provider.
- Nodig een tenant user met dat domein uit en voltooi één echte login.
- Controleer dat de externe provider de verwachte verified email claim of SAML email attribute teruggeeft.
- Controleer dat password fallback blijft werken voor users die dat nodig hebben.
- Documenteer tenant-side MFA en access policy ownership met de klant.
- Controleer audit events en tenant session behavior voordat SSO policy wordt afgedwongen.
