【发布时间】:2021-03-13 14:10:29
【问题描述】:
我有一个使用 B2C 身份验证的 ASP.NET CORE 3.1 项目。我已经像这样配置了身份验证的配置:
services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
.AddAzureADB2C(options => Configuration.Bind("A", options));
“A”是我的 json,其中包含我的 B2C 信息,例如客户端 ID、租户 ID 等...
json 看起来像这样:
"A": {
"Instance": "https://A.b2clogin.com/tfp/",
"ClientId": "359fes9e-42a0-4c13-8693-961f6f6f0f79",
"CallbackPath": "/signin-oidc",
"Domain": "A.onmicrosoft.com",
"SignUpSignInPolicyId": "B2C_1A_signup_signin"},
"B": {
"Instance": "https://B.b2clogin.com/tfp/",
"ClientId": "359fes9e-42a0-4c13-8693-96fejoff0f79",
"CallbackPath": "/signin-oidc",
"Domain": "A.onmicrosoft.com",
"SignUpSignInPolicyId": "B2C_1B_signup_signin"},
我想切换我的 B2C 身份验证配置(例如 json A 到 json B)。
已测试:
我已经过测试,可以像这样在我的 startup.cs 中设置两个 B2C:
services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
.AddAzureADB2C(options => Configuration.Bind("A", options))
.AddAzureADB2C(options => Configuration.Bind("B", options));
没有工作...
我已经过测试,可以像这样使用 OpenId Connect 设置身份验证:
services.AddAuthentication()
.AddOpenIdConnect("A", options => {
options.Authority = A.Authority;
options.CallbackPath = A.CallbackPath;
options.ClientId = A.ClientID;
})
.AddOpenIdConnect("B", options => {
options.Authority = B.Authority;
options.CallbackPath = B.CallbackPath;
options.ClientId = B.ClientID;
})
而且这个解决方案也不起作用。
如果您有他解释我的问题的解决方案或文档,请提前致谢!
科伦丁
【问题讨论】:
-
B 是另一个租户吧?为什么 ClientId 与租户 A 中的相同?您应该在租户 B 中创建一个新的 Azure AD 应用。
-
A 和 B 的唯一区别是注册登录策略,我只是想用 json 切换策略
-
AddAzureADB2C方法不允许我们添加多个登录/注册策略。对于这个用例,也许您可以同时使用AddAzureADB2C和AddOpenIdConnect。见mikaberglund.com/…。 -
我打不开你的网址
-
我可以毫无问题地打开它。也许你的防火墙阻止了你?您可以在不同的环境中尝试。还是使用其他浏览器?
标签: c# authentication azure-ad-b2c multi-tenant