Docs/Integraties/Single sign-on (SSO)
Single sign-on (SSO)
Per-tenant SSO instellen voor Curriculate via Microsoft Entra ID of Google Workspace.
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
Eén login die past bij je school
Section titled “Eén login die past bij je school”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
Wat je nodig hebt
Section titled “Wat je nodig hebt”- 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 domeincurriculate.nl— je tenant heeft géén eigen subdomein zoalsdcterra.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
Maak een app-registratie aan
Section titled “Maak een app-registratie aan”Kies hieronder de provider die je school gebruikt. De stappen zijn vergelijkbaar; de naamgeving van velden verschilt iets.
-
Open het Microsoft Entra admin center → Identity → Applications → App registrations → New registration.
-
Vul de registratie in:
Veld Waarde Name Curriculate— vrij te kiezen.Supported account types Accounts in this organizational directory only. Redirect URI Web · https://curriculate.nl/auth/entra/callbackDezelfde 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. -
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
commoninvullen.
-
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.
-
Onder API permissions zijn de standaardrechten voldoende:
openid,profile,email. Curriculate vraagt geen aanvullende Microsoft Graph-rechten.
Aan te leveren bij Curriculate:
| Veld | Waarde |
|---|---|
| Aanmeldmethode | Microsoft Entra ID |
| Client ID | De Application (client) ID |
| Client secret | De zojuist aangemaakte secret-waarde |
| Entra tenant ID | De Directory (tenant) ID, of common |
-
Open de Google Cloud Console → APIs & Services → Credentials. Maak indien nodig eerst een project aan (
Curriculate SSO) en stel het OAuth consent screen in op type Internal — daarmee weiger je aanmeldingen vanaf persoonlijke Google-accounts. -
Klik op Create credentials → OAuth client ID.
-
Application type: Web application.
-
Name:
Curriculate. -
Authorized redirect URIs: voeg exact deze waarde toe:
https://curriculate.nl/auth/google/callbackDezelfde redirect-URI geldt voor élke tenant — Curriculate matcht op e-maildomein, niet op subdomein.
-
-
Klik op Create en noteer:
- Client ID — eindigt op
.apps.googleusercontent.com. - Client secret.
- Client ID — eindigt op
-
(Optioneel maar aanbevolen) noteer het Workspace-domein waarvan gebruikers mogen inloggen — bijvoorbeeld
dcterra.nl. Curriculate stuurt dit alshd-parameter mee, zodat Google alleen accounts uit dat Workspace toestaat.
Aan te leveren bij Curriculate:
| Veld | Waarde |
|---|---|
| Aanmeldmethode | Google Workspace |
| Client ID | Het OAuth Client ID |
| Client secret | Het OAuth Client Secret |
| Workspace-domein | (Optioneel) bijv. dcterra.nl |
Stap 2 — bij Curriculate
Curriculate activeert SSO voor je tenant
Section titled “Curriculate activeert SSO voor je tenant”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
Test de aanmelding
Section titled “Test de aanmelding”-
Ga naar
https://curriculate.nlen klik op Inloggen. -
Vul je e-mailadres in en klik op Doorgaan — Curriculate herkent de juiste provider aan je e-maildomein.
-
Je wordt doorgestuurd naar je identity provider voor authenticatie (en eventueel MFA).
-
Na succesvolle aanmelding kom je terug op het Curriculate-dashboard van jouw tenant.
Onder de motorkap
Hoe werkt het inloggen?
Section titled “Hoe werkt het inloggen?”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.
-
De gebruiker opent
curriculate.nl, typt het e-mailadres en klikt op Doorgaan. -
Curriculate’s
TenantResolvermatcht het e-maildomein op deemail_domainsdie per tenant geregistreerd zijn. Geen match? Dan stopt de flow met “SSO is niet ingesteld voor deze omgeving.” -
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. -
Na inloggen bij Microsoft of Google stuurt de provider de gebruiker terug naar
https://curriculate.nl/auth/entra/callbackof/auth/google/callback. Eén callback voor alle tenants — de tenant wordt teruggevonden via de OAuth-state. -
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.
- matcht de gebruiker op
Veiligheid
Beveiliging en goede gewoontes
Section titled “Beveiliging en goede gewoontes”- 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/callbackrespectievelijkhttps://curriculate.nl/auth/google/callback— inclusiefhttps://en zonder afsluitende slash. Géén tenant-subdomein.
Beperkingen
Wat SSO niet doet
Section titled “Wat SSO niet doet”- 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
Veelvoorkomende foutmeldingen
Section titled “Veelvoorkomende foutmeldingen”| Melding | Oorzaak |
|---|---|
| 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_mismatch | De redirect-URI bij Google komt niet exact overeen met https://curriculate.nl/auth/google/callback. |