Hi, I am trying to get external login with azure b2c to work in umbraco version: 9.4 (+ uSync package installed)
I have added openid connect external login to umbraco and added MicrosoftMemberExternalLoginProviderOptions. I return a Challenge from controller action with following code:
public IActionResult ExternalLogin(string returnUrl)
{
return Challenge(
new AuthenticationProperties
{
RedirectUri = "/blog",
Items = { { "returnUrl", returnUrl } }
}, Constants.Security.MemberExternalAuthenticationTypePrefix + MicrosoftMemberExternalLoginProviderOptions.SchemeName);
}
ConfigureServices:
services.ConfigureOptions<MicrosoftMemberExternalLoginProviderOptions>();
services.AddUmbraco(_env, _config)
.AddBackOffice()
.AddWebsite()
.AddComposers()
.AddMemberExternalLogins(logins =>
{
logins.AddMemberLogin(
memberAuthenticationBuilder =>
{
memberAuthenticationBuilder.AddOpenIdConnect(
memberAuthenticationBuilder.SchemeForMembers(MicrosoftMemberExternalLoginProviderOptions.SchemeName),
options =>
{
options.Authority = $"https://login.microsoftonline.com/{azureB2CTenant}/v2.0";
options.ClientId = azureB2CClientId;
options.ClientSecret = azureB2CClientSecret;
options.CallbackPath = "/signin-microsoft";
options.Scope.Add(OpenIdConnectScope.Email);
options.ResponseType = OpenIdConnectResponseType.Code; //"code";
options.ResponseMode = OpenIdConnectResponseMode.Query;// "query";
options.UsePkce = true;
options.GetClaimsFromUserInfoEndpoint = true;
}
);
});
})
.Build();
class MicrosoftMemberExternalLoginProviderOptions is from docs pages:
public const string SchemeName = "Microsoft";
public void Configure(string name, MemberExternalLoginProviderOptions options)
{
if (name != Constants.Security.MemberExternalAuthenticationTypePrefix + SchemeName)
{
return;
}
Configure(options);
}
public void Configure(MemberExternalLoginProviderOptions options) =>
options.AutoLinkOptions = new MemberExternalSignInAutoLinkOptions(
// Must be true for auto-linking to be enabled
autoLinkExternalAccount: true,
defaultCulture: null,
defaultIsApproved: true,
defaultMemberTypeAlias: "Member",
defaultMemberGroups: Array.Empty<string>()
)
{
OnAutoLinking = (autoLinkUser, loginInfo) =>
{
},
OnExternalLogin = (user, loginInfo) =>
{
return true;
},
};
Redirect to Microsoft login works, and redirect back to /blogs works as well, but it does not create local account. I thought implementing IConfigureNamedOptions< MemberExternalLoginProviderOptions > will take care of that.
This are requests from browser:
What am I missing?
Thank you.
This is a companion discussion topic for the original entry at https://our.umbraco.com/forum/108632-problem-wit-external-member-login-plus-autolinking
