Single Sign-On (SSO / OIDC)

    OpenID Connect configureren voor federatieve authenticatie

    Overzicht

    Anzen ondersteunt Single Sign-On via OpenID Connect (OIDC). Hiermee kunnen uw gebruikers authenticeren met een externe identiteitsprovider (IdP) zoals Microsoft Entra ID (Azure AD), Okta, Keycloak, Google Workspace of elke OIDC-compatibele provider.

    SSO is beschikbaar op de Professional- en Enterprise-abonnementen. Na configuratie kunnen gebruikers inloggen via SSO vanuit zowel de Beheerinterface als het Serviceportaal. Configuratie wordt per tenant uitgevoerd door een superadmin via de beheerinterface onder Instellingen → SSO / OIDC.

    Authenticatiestroom

    Anzen gebruikt de Authorization Code-stroom (server-side):

    1. Gebruiker klikt op “Inloggen met SSO” op de inlogpagina.
    2. Anzen stuurt de browser van de gebruiker door naar het autorisatie-endpoint van uw IdP.
    3. De gebruiker authenticeert bij de IdP (wachtwoord, MFA, etc.).
    4. De IdP stuurt terug naar Anzen met een autorisatiecode.
    5. Anzen wisselt de code in voor tokens met de client_id en client_secret (server-side, vertrouwelijke client).
    6. Anzen leest de identiteit van de gebruiker uit het ID-token / userinfo-endpoint en maakt of updatet het lokale gebruikersaccount.

    IdP-configuratie

    Bij het registreren van Anzen als client/applicatie in uw identiteitsprovider, gebruik de volgende instellingen:

    InstellingWaarde
    ApplicatietypeWebapplicatie (vertrouwelijke client)
    Root-URL / Home-URLhttps://<uw-workspace>.anzenplatform.com
    Redirect-URI’s / Callback-URL’shttps://<uw-workspace>.anzenplatform.com/management/oidc/callback
    https://<uw-workspace>.anzenplatform.com/oidc/callback
    Post-logout redirect-URI’shttps://<uw-workspace>.anzenplatform.com/management/login
    https://<uw-workspace>.anzenplatform.com/login
    Grant type / Auth flowAuthorization Code
    ClientauthenticatieClient secret (verzonden als POST body)
    PKCENiet vereist (server-side vertrouwelijke client)
    Scopesopenid email profile

    Vervang <uw-workspace> door uw werkelijke workspaceslug (bijv. acme).

    Belangrijk: Twee redirect-URI’s zijn vereist omdat Anzen twee frontends heeft die SSO ondersteunen - de Beheerinterface (op /management/) en het Serviceportaal (op /). Beide moeten worden geregistreerd in uw identiteitsprovider.

    Anzen-configuratie

    In de Anzen-beheerinterface onder Instellingen → SSO / OIDC, vul in:

    VeldBeschrijving
    ProvidernaamWeergavenaam op de inlogknop (bijv. “Microsoft”, “Okta”, “Keycloak”)
    Client IDDe OAuth2 client ID van uw IdP
    Client secretHet OAuth2 client secret van uw IdP
    Discovery-URLHet OIDC discovery-endpoint, doorgaans eindigend op /.well-known/openid-configuration
    IngeschakeldSchakelaar om SSO-inloggen voor uw workspace in/uit te schakelen

    Groepskoppeling

    Anzen kan gebruikers automatisch aan groepen toewijzen op basis van hun IdP-claims. Dit wordt geconfigureerd in de SSO-instellingen onder Groepskoppeling.

    Configuratie

    VeldBeschrijving
    GroepsclaimDe claim in het IdP-token die groeps- of rolnamen bevat. Voorbeelden: groups (Azure AD, Okta), realm_access.roles (Keycloak). Ondersteunt geneste paden met puntnotatie.
    StandaardgroepenAnzen-groepen die aan elke OIDC-gebruiker worden toegewezen bij inloggen, ongeacht hun IdP-groepen.
    IdP-groepskoppelingenKoppelt specifieke IdP-groeps-/rolnamen aan een of meer Anzen-groepen. Bijvoorbeeld, koppel de IdP-rol “admin” aan de Anzen-groepen “Beheerders” en “Auditors”.

    Hoe het werkt

    1. Bij elke SSO-inlog leest Anzen de groepsclaim uit het IdP-token (ID-token of userinfo).
    2. Standaardgroepen worden altijd aan de gebruiker toegewezen.
    3. Elke IdP-groepsnaam wordt vergeleken met de geconfigureerde koppelingen.
    4. Overeenkomende Anzen-groepen worden toegevoegd aan het groepslidmaatschap van de gebruiker.
    5. Groepssynchronisatie is additief - handmatig toegewezen groepen worden nooit verwijderd.

    Veelgebruikte groepsclaims per provider

    ProviderGroepsclaim
    Keycloakrealm_access.roles of groups
    Microsoft Entra IDgroups (vereist “Group claims” in tokenconfiguratie)
    Oktagroups (vereist groups claim in authorization server)
    Google WorkspaceNiet beschikbaar via standaard OIDC (gebruik standaardgroepen)
    Auth0https://your-namespace/roles (aangepaste claim via Auth0 Actions)

    Voorbeelden van discovery-URL’s

    ProviderDiscovery-URL
    Microsoft Entra IDhttps://login.microsoftonline.com/<tenant-id>/v2.0/.well-known/openid-configuration
    Oktahttps://<uw-domein>.okta.com/.well-known/openid-configuration
    Keycloakhttps://<host>/realms/<realm>/.well-known/openid-configuration
    Google Workspacehttps://accounts.google.com/.well-known/openid-configuration
    Auth0https://<uw-domein>.auth0.com/.well-known/openid-configuration

    Gebruikersprovisioning

    Wanneer een gebruiker voor het eerst authenticeert via SSO, maakt Anzen automatisch een lokaal gebruikersaccount aan met het e-mailadres en de naam uit de claims van de IdP. De gebruiker heeft geen lokaal wachtwoord nodig - ze kunnen alleen inloggen via SSO.

    Automatisch aangemaakte gebruikers tellen mee voor de gebruikerslimiet van uw abonnement. Op het Free-abonnement wordt SSO-gebruikersprovisioning geblokkeerd zodra de limiet van 10 gebruikers is bereikt.

    Beveiligingsnotities

    • Het client secret wordt nooit via de API blootgesteld - alleen een gemaskeerde versie wordt getoond.
    • CSRF-bescherming wordt afgedwongen via een willekeurige state-parameter bij elk autorisatieverzoek.
    • Tokenuitwisseling vindt server-side plaats - het client secret wordt nooit naar de browser gestuurd.
    • PKCE wordt niet gebruikt omdat Anzen als een vertrouwelijke (server-side) client fungeert. Als uw IdP PKCE vereist, schakel die vereiste uit voor deze client.
    • Lokale wachtwoordinloggen blijft beschikbaar naast SSO. Gebruikers die zijn aangemaakt via SSO hebben geen lokaal wachtwoord en kunnen alleen inloggen via SSO.

    Probleemoplossing

    • Discovery-URL-test mislukt: Controleer of de URL eindigt op /.well-known/openid-configuration en bereikbaar is vanaf de Anzen-server.
    • Redirect-mismatch: Beide redirect-URI’s moeten zijn geregistreerd in uw IdP: /management/oidc/callback voor de Beheerinterface en /oidc/callback voor het Serviceportaal.
    • Ontbrekende e-mailclaim: Zorg dat de email-scope is verleend en dat de IdP de email-claim opneemt in het ID-token of userinfo-response.
    • Gebruikerslimiet bereikt: Op het Free-abonnement mislukt SSO-inloggen als er al 10 gebruikers zijn. Upgrade naar Professional voor onbeperkte gebruikers.

    Hulp nodig?

    Als u het probleem niet zelf kunt oplossen, staat ons supportteam voor u klaar. Neem contact op met support.