Ga naar inhoud

Docs/Integraties/Single sign-on (SSO)

Single sign-on (SSO)

Per-tenant SSO instellen voor Curriculate via Microsoft Entra ID of Google Workspace.

IntegratiesTenantbeheer≈ 15 min setup Versie 2026.05

Curriculate ondersteunt single sign-on per tenant via Microsoft Entra ID of Google Workspace. Gebruikers loggen in met hun bestaande schoolaccount en hoeven geen apart wachtwoord of magic link te gebruiken.

Overzicht

Met SSO logt je team in bij Curriculate via dezelfde identiteit waarmee ze al inloggen op Office 365 of Google Workspace. Dat scheelt wachtwoorden, voorkomt schaduwaccounts en houdt de levenscyclus van een medewerker — instromen, verhuizen, uitstromen — bij je IT-afdeling waar die hoort.

Voorbereiding

  • Beheerderstoegang tot Microsoft Entra ID (Azure portal) of de Google Admin Console.
  • De slug van je Curriculate-tenant (bijvoorbeeld dcterra). Curriculate draait op één canoniek domein curriculate.nl — je tenant heeft géén eigen subdomein zoals dcterra.curriculate.nl. Iedereen logt in op dezelfde host.
  • Een lijst met e-maildomeinen waarvan je medewerkers gebruikmaken (bijvoorbeeld dcterra.nl, docent.dcterra.nl). Curriculate herkent de juiste tenant op basis van het e-maildomein van de gebruiker, niet op basis van de URL.

Stap 1 — bij de identity provider

Kies hieronder de provider die je school gebruikt. De stappen zijn vergelijkbaar; de naamgeving van velden verschilt iets.

  1. Open het Microsoft Entra admin centerIdentity → Applications → App registrationsNew registration.

  2. Vul de registratie in:

    VeldWaarde
    NameCurriculate — vrij te kiezen.
    Supported account typesAccounts in this organizational directory only.
    Redirect URIWeb · https://curriculate.nl/auth/entra/callback

    Dezelfde redirect-URI geldt voor élke tenant — Curriculate matcht op e-maildomein, niet op subdomein. Vul exact deze waarde in, inclusief https:// en zonder afsluitende slash.

  3. Klik op Register. Noteer op het overzichtsscherm:

    • Application (client) ID — een GUID.
    • Directory (tenant) ID — eveneens een GUID. Voor multi-tenant apps mag je hier later common invullen.
  4. Ga naar Certificates & secrets → Client secrets en klik op New client secret. Kies een geldigheidsduur en kopieer de waarde onmiddellijk — Microsoft toont de secret maar één keer.

  5. Onder API permissions zijn de standaardrechten voldoende: openid, profile, email. Curriculate vraagt geen aanvullende Microsoft Graph-rechten.

Aan te leveren bij Curriculate:

VeldWaarde
AanmeldmethodeMicrosoft Entra ID
Client IDDe Application (client) ID
Client secretDe zojuist aangemaakte secret-waarde
Entra tenant IDDe Directory (tenant) ID, of common

Stap 2 — bij Curriculate

Stuur de hierboven genoemde gegevens via een veilig kanaal naar je Curriculate-contactpersoon. Een platformbeheerder voert ze in via de admin onder Tenants → [jouw tenant] → Configuratie → Single sign-on en kiest bij Aanmeldmethode voor Microsoft Entra ID of Google Workspace.

Het client secret wordt versleuteld opgeslagen. Bij rotatie noteert Curriculate automatisch de datum onder laatst geroteerd.

Stap 3 — verifieer

  1. Ga naar https://curriculate.nl en klik op Inloggen.

  2. Vul je e-mailadres in en klik op Doorgaan — Curriculate herkent de juiste provider aan je e-maildomein.

  3. Je wordt doorgestuurd naar je identity provider voor authenticatie (en eventueel MFA).

  4. Na succesvolle aanmelding kom je terug op het Curriculate-dashboard van jouw tenant.

Onder de motorkap

Curriculate gebruikt de OpenID Connect Authorization Code-flow. We bewaren geen wachtwoorden — alleen een verwijzing naar de provider-identiteit (external_id) en het hoofd-e-mailadres.

  1. De gebruiker opent curriculate.nl, typt het e-mailadres en klikt op Doorgaan.

  2. Curriculate’s TenantResolver matcht het e-maildomein op de email_domains die per tenant geregistreerd zijn. Geen match? Dan stopt de flow met “SSO is niet ingesteld voor deze omgeving.”

  3. Curriculate stuurt de gebruiker door naar /auth/entra/redirect/{slug} of /auth/google/redirect/{slug} — de slug komt uit de tenant-resolutie, niet uit de URL waarop de gebruiker zit.

  4. Na inloggen bij Microsoft of Google stuurt de provider de gebruiker terug naar https://curriculate.nl/auth/entra/callback of /auth/google/callback. Eén callback voor alle tenants — de tenant wordt teruggevonden via de OAuth-state.

  5. Curriculate:

    • matcht de gebruiker op external_id (eerder ingelogd) of e-mailadres binnen de tenant,
    • maakt een nieuwe gebruiker aan als die nog niet bestaat,
    • logt het resultaat (succes of fout) in het interne SSO-auditlogboek.

Veiligheid

  • Stop het client secret nooit in e-mail of chat zonder versleuteling. Gebruik een wachtwoordkluis of een eenmalige link.
  • Roteer het secret periodiek. Lever een nieuw secret aan; Curriculate registreert automatisch de datum waarop de rotatie heeft plaatsgevonden.
  • Beperk Google-aanmeldingen tot je eigen Workspace door het Workspace-domein aan te leveren.
  • Controleer de redirect-URI. Deze moet exact overeenkomen met https://curriculate.nl/auth/entra/callback respectievelijk https://curriculate.nl/auth/google/callback — inclusief https:// en zonder afsluitende slash. Géén tenant-subdomein.

Beperkingen

  • Eén SSO-provider per tenant. Een tenant kan op Magic link, Entra ID óf Google staan — niet meerdere tegelijk.
  • Een gebruiker kan niet zowel via Entra als Google inloggen. Wie al via Entra is aangemaakt, kan niet daarna via Google inloggen onder hetzelfde e-mailadres. Curriculate weigert dat met een foutmelding — een platformbeheerder moet de koppeling dan eerst loskoppelen.
  • Cross-tenant logins worden geweigerd. Een gebruiker die al bij tenant A hoort, kan niet via tenant B’s SSO-flow inloggen, ook niet met hetzelfde e-mailadres.
  • Geen tenant-subdomeinen. Curriculate werkt vanaf één canoniek domein curriculate.nl. Branding per tenant zit in de UI ná het inloggen, niet in de URL.
  • Rollen en rechten worden niet via SSO meegegeven; deze beheer je binnen Curriculate zelf (of via SCIM-provisioning voor de gebruikersaanmaak).

Troubleshooting

MeldingOorzaak
SSO is niet ingesteld voor deze omgeving.De tenant staat nog op magic_link of mist een client_id/client_secret.
Aanmelden mislukt: sessie verlopen, probeer opnieuw.OAuth-state niet meer geldig. Vaak opgelost door de aanmelding opnieuw te starten.
Aanmelden mislukt. Neem contact op met je beheerder.E-maildomein hoort niet bij de tenant, of gebruiker is gekoppeld aan een andere provider.
AADSTS50011: The reply URL specified…De redirect-URI bij Microsoft komt niet exact overeen met https://curriculate.nl/auth/entra/callback.
Google: Error 400: redirect_uri_mismatchDe redirect-URI bij Google komt niet exact overeen met https://curriculate.nl/auth/google/callback.