【问题标题】:Add Multiple B2C Authentification in ASP.NET CORE在 ASP.NET CORE 中添加多个 B2C 身份验证
【发布时间】: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 方法不允许我们添加多个登录/注册策略。对于这个用例,也许您可​​以同时使用AddAzureADB2CAddOpenIdConnect。见mikaberglund.com/…
  • 我打不开你的网址
  • 我可以毫无问题地打开它。也许你的防火墙阻止了你?您可以在不同的环境中尝试。还是使用其他浏览器?

标签: c# authentication azure-ad-b2c multi-tenant


【解决方案1】:

如果我了解您的要求,您需要接受来自多个登录策略的令牌。我们也有同样的需求,为了解决它,我们放弃了开箱即用的助手并创建了自己的助手。使用开箱即用的扩展将面临双重问题,一个是底层代码不允许多个元素,另一个是签名密钥将因策略而异。为了解决这个问题,我们基本上为每个策略调用众所周知的端点(标准格式,如果您有策略名称,则 url 很容易构建),然后我们获取签名密钥并将它们插入到数组中。我们用它来创建 TokenValidationParameters 对象,然后在调用 services.AddAuthentication().AddJwtBearer 调用 jwtOptions.TokenValidationParameters 如果你仍然需要这个答案,我可以清理代码足以分享。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2017-03-30
    • 2018-06-25
    • 2016-05-19
    • 2018-05-13
    相关资源
    最近更新 更多