Zakelijke gebruikers toegang geven op een Azure AD B2C tenant

-

Voor een van onze klanten hebben we een set B2B-applicaties gemaakt met behulp van Azure Active Directory (B2B) en Azure App Service Authentication (EasyAuth). Nu willen ze hiermee hun klanten toegang geven tot een van de applicaties, en toch single sign-on voor (externe) zakelijke gebruikers op alle applicaties mogelijk maken. Om dit te bereiken hebben we Azure AD B2C gebruikt en deze gekoppeld aan de bestaande Azure AD-tenant die alle zakelijke gebruikers bevat. In deze blog beschrijf ik de stappen en misstappen die we hebben genomen tijdens dit project. Ik zal mij hierbij uitsluitend richten op de Azure AD-configuratie en andere wijzigingen achterwege laten.

Laten we aannemen dat de Azure AD-tenant en de AD B2C-tenant zijn gemaakt met de app-registratie en gebruikersstromen en ons richten op het koppelen van de active directory tenants.

Maak een identiteitsprovider

Configure the custom identity provider

De identiteitsprovider configureren

Maak eerst een app-registratie aan in de Azure AD-tenant. Deze app-registratie functioneert als de identiteitsprovider voor de Azure AD B2C tenant. De redirect uri is de verificatie url van de B2C tenant. Deze uri heeft het format https://<b2c-tenant-id>.b2clogin.com/<b2c-tenant-id>.onmicrosoft.com/oauth2/authresp

Configureer vervolgens een client secret. Onthoud de client id en de client secret, aangezien deze nodig zijn bij het configureren van de identiteitsprovider in de B2C-tenant.

Schakel over naar de B2C-tenant om een nieuwe identiteitsprovider aan te maken. Zorg ervoor dat deze een duidelijk herkenbare naam heeft, want de naam wordt weergegeven op de aanmeld- en inlogpagina’s.

Geef vervolgens de client id en client secret op van de app die we zojuist gemaakt hebben en bouw de metadata-url op op basis van het volgende sjabloon: https://login.microsoftonline.com/<b2b-tenant-id>/v2.0/.well-known/openid-configuration

Sign-in flow with corporate account

Aanmeldingsstroom met bedrijfsaccount

De laatste stap is het inschakelen van de identiteitsprovider in de gebruikersstromen. Dit is niets meer dan het selecteren van de OpenID Connect Identity provider bij de benodigde gebruikersstromen. Vergeet niet om de identiteitsprovider in de aanmeldingsstroom in te schakelen. Zie ‘problemen die ik tegenkwam’ voor meer details. Bij het testen van de inlogflow wordt de ‘corporate’ inlogknop weergegeven.

Problemen waar ik tegen aan liep

Een identiteitsprovider verwijderen

Tijdens het voorbereiden van de blogpost heb ik een identiteitsprovider verwijderd die in gebruik was door een gebruikersstroom. Hierdoor werd de gebruikersstroom verborgen en was het bijna onmogelijk om deze weer terug te krijgen.

Admin consent voor B2B gebruikers

Bij het inloggen met een B2B-account wordt de gebruiker om toestemming gevraagd. Wanneer de gebruiker geen admin rechten heeft, is het geven van toestemming niet mogelijk. Ofwel een beheerder van de organisatie moet eerst inloggen om toestemming te geven of toestemming van de beheerder wordt gegeven in de B2B App-registratie via het tabblad Api-machtigingen.

Inloggen als B2B gebruiker

Wanneer ik inlog als B2B-gebruiker, krijg ik een 401-fout voor het ‘callback request’ van mijn applicatie. In het tabblad netwerk in de ontwikkelaarstools van de browser, ontdekte ik de volgende foutmelding:

User does not exist

Gebruiker bestaat niet

Hoewel het een zakelijke gebruiker is die is geregistreerd in de B2B-tenant, moet de gebruiker zich wel eerst aanmelden. Hiermee wordt de koppeling gemaakt tussen de B2C-tenant en de B2B-tenant. Bij gebruik van de gecombineerde inlog- en aanmeld flow wordt de gebruiker automatisch geregistreerd in de B2C-tenant.