This post covered an overview of Azure Active Directory (AD) B2C and described some of the gotchas.
Imagine you have purchased a SaaS application that supports "normal" OpenID Connect. The vendor has quoted a ridiculous price to add the profile support necessary for the SaaS application to connect to Azure B2C.
One way around this (as you guessed from the title!) is to add IdentityServer into the mix.
The path would then be:
SaaS application --> normal OIDC --> IdentityServer --> add profile info. to OIDC --> Azure B2C
The Azure AD B2C sample is Azure AD B2C preview: Build a .NET web app.
We need to add Azure B2C to IdentityServer as an external OIDC CP.
The SaaS application is added to IdentityServer as an OIDC RP.
For simplicity, just sign-in is covered. I'm assuming the user has already registered themselves.
As usual, here is the gist.
(Note that this is still a work in progress. Some B2C claims are not being passed through. I'm still investigating that. Hopefully, this does provide some guidance).
To test this out, I used this sample as the SaaS application. This uses "normal OIDC" to talk to IdentityServer.
The B2C sign-in profile is configured to allow local account login plus Facebook.
When the user clicks Sign-In in the application. they see this IdentityServer HRD screen.
The user selects "Azure B2C".
They then get redirected to B2C and:
They select "Local Account SignIn" and enter their credentials.
They are then redirected back to the application and see their claims.
To expand this into "SignUp", "Edit Details", "Reset Password" etc. you could have some more buttons on the HRD screen each tied into a different B2C profile.
However, this assumes that all applications will have the same set of authentication providers. For the case where some applications use Facebook only, some use local and Twitter etc. there will have to be some kind of mapping table mapping applications to providers.
And some of you will be asking "What about SaaS applications that use WS-Fed or SAML?". Good question, that was another reason to add IdentityServer into the mix and that is the subject of another post.