ADB2C用户流程和IEF策略不能互操作吗?

时间:2020-05-21 15:09:04

标签: azure-active-directory asp.net-core-webapi azure-ad-b2c

我有一个.NET WebApi应用程序项目,该项目一直在使用内置的用户流策略。这些政策已被IEF的新政策所取代。

我发现的是,如果我从IEF策略中生成令牌,但尝试在默认设置为使用UserFlow策略的WebAPI上使用它,则由于签名不匹配而失败。

WebApi应用设置示例

"AzureAdB2C": {
    "Instance": "https://XXXXX.b2clogin.com/tfp/",
    "ClientId": "XXXXX",
    "Domain": "XXX.onmicrosoft.com",
    "SignUpSignInPolicyId": "B2C_1_signinsignup" //UserFlow policy
    "SignUpSignInPolicyId": "B2C_1A_CustomSigninAndSignUp" //IEF policy
  },

由于UserFlow和IEF策略位于同一租户上,我以为它们可以互换/可互操作?如果我将WebApi设置为使用IEF策略之一,它将起作用。

是否可以使UserFlow和IEF策略协同工作?

2 个答案:

答案 0 :(得分:1)

@Raj,

不同的策略具有其自己的签名,并且不能彼此使用,除非您在.net中禁用了签名验证。

如果查看每个策略的OpenID元数据,您会在keys元素中注意到每个都有不同的签名,并且不会针对其他策略进行验证。

https://flirb2cdev.b2clogin.com/flirb2cdev.onmicrosoft.com/ / v2.0 /。众所周知/ openid配置

答案 1 :(得分:1)

据我了解,在创建自定义策略(IEF)时,安装程​​序的一部分要求您创建/添加签名和加密密钥:https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-get-started?tabs=applications#add-signing-and-encryption-keys

因此,如果您创建了一堆自定义策略,则可以导入相同的签名/ enc密钥,以使所有自定义策略都使用相同的令牌工作。

从理论上讲,如果您可以下载内置策略使用的签名/编码键(用户流),则可以将其导入到自定义策略中,并且理论上它们应该匹配并验证。但是,由于用户流(内置)策略实际上是从Microsoft的租户继承的,并且使用Microsoft的公钥/私钥,因此我认为没有办法提取这些策略。 这意味着,不可能使ief和userflow策略都验证相同的密钥签名。 如果您同时需要这两种策略,那么剩下的唯一解决方案就是按照Christopher的建议忽略验证,但是不建议这样做。因为验证是有原因的,因此存在安全隐患。