我有一个.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策略协同工作?
答案 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的建议忽略验证,但是不建议这样做。因为验证是有原因的,因此存在安全隐患。