在 ASP.NET CORE 中添加多个 B2C 身份验证
Add Multiple B2C Authentification in ASP.NET CORE
我在 ASP.NET CORE 3.1 中有一个项目使用 B2C 身份验证。我已经像这样配置了身份验证的配置:
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;
})
这个解决方案也行不通。
如果您有可以解释我的问题的解决方案或文档,在此先感谢!
科伦廷
如果我理解您的要求,您需要接受来自多重登录策略的令牌。我们也有同样的要求,为了解决它,我们放弃了开箱即用的助手并创建了我们自己的助手。使用开箱即用的扩展程序将面临双重问题,一个是底层代码不允许多个元素,另一个是签名密钥的政策因政策而异。为了解决这个问题,我们基本上为每个策略调用众所周知的端点(标准格式,如果你有策略名称,url 很容易构建),然后我们获取签名密钥并将它们插入数组.我们用它来创建 TokenValidationParameters 对象,然后在调用 services.AddAuthentication() 中使用。AddJwtBearer 调用 jwtOptions.TokenValidationParameters 如果您仍然需要这个答案,我可能会整理代码以进行共享。
我在 ASP.NET CORE 3.1 中有一个项目使用 B2C 身份验证。我已经像这样配置了身份验证的配置:
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;
})
这个解决方案也行不通。
如果您有可以解释我的问题的解决方案或文档,在此先感谢!
科伦廷
如果我理解您的要求,您需要接受来自多重登录策略的令牌。我们也有同样的要求,为了解决它,我们放弃了开箱即用的助手并创建了我们自己的助手。使用开箱即用的扩展程序将面临双重问题,一个是底层代码不允许多个元素,另一个是签名密钥的政策因政策而异。为了解决这个问题,我们基本上为每个策略调用众所周知的端点(标准格式,如果你有策略名称,url 很容易构建),然后我们获取签名密钥并将它们插入数组.我们用它来创建 TokenValidationParameters 对象,然后在调用 services.AddAuthentication() 中使用。AddJwtBearer 调用 jwtOptions.TokenValidationParameters 如果您仍然需要这个答案,我可能会整理代码以进行共享。