问题描述
我有一个使用 .NET Core 3.1 MVC Web 应用程序的应用程序,该应用程序使用 Azure AD B2C 来登录用户,我刚刚将其迁移为使用 Microsoft Identity Web 库。
我们希望有两种不同的登录政策,一种适用于普通用户 (B2C_1A_SignUpOrSignIn),另一种适用于管理员用户 (B2C_1A_SignInAdmin)。 因此,在 Appsettings 中,我们有以下格式:
"AzureAdB2C": {
"Instance": "https://url.b2clogin.com/tfp/","ClientId": "clientId","CallbackPath": "/signin-oidc","SignedOutCallbackPath": "/signout/B2C_1A_SignUpOrSignIn","Domain": "url.onmicrosoft.com","Domain_b2cLogin": "url",// required by the Cookie Policy
"SignUpSignInPolicyId": "B2C_1A_SignUpOrSignIn","SignInAdminPolicyId": "B2C_1A_SignInAdmin","ResetPasswordPolicyId": "B2C_1A_PasswordReset","EditProfilePolicyId": "","ClientSecret": key,"B2cExtensionAppClientId": "key"
},
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(Configuration,"AzureAdB2C");
而且我还覆盖了“AzureController”,因此,对于普通用户,我使用从 此处Microsoft Identity Web - Account Controller“登录”。但是,对于管理员用户,我更改了该方法以使用类似于 PasswordReset 方法提供的内容,如下所示:
public IActionResult SignInAdmin()
{
string scheme = OpenIdConnectDefaults.AuthenticationScheme;
var redirectUrl = Url.Content("~/");
var properties = new AuthenticationProperties { RedirectUri = redirectUrl };
properties.Items[Constants.Policy] = "B2C_1A_SignInAdmin";
return Challenge(properties,scheme);
}
似乎一切正常,用户被重定向到基于策略的正确登录页面,令牌由 Azure 颁发,我们的应用程序在我们的方法中接受令牌
options.Events.OnTokenValidated = context => {}
然而,不久之后,身份验证和方法出现了问题
options.Events.OnRemoteFailure
被调用,但有以下异常 “{”消息包含错误:'invalid_grant',error_description:'AADB2C90088:尚未为此端点颁发提供的授权。实际值:B2C_1A_SignUpOrSignIn 和预期值:B2C_1A_SignInAdmin ..."
那么,我的问题是,我必须做什么才能使用两种不同的策略登录?或者我应该做任何配置才能做到这一点?
先谢谢你。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)