Azure active directory ADB2C用户流和IEF策略不可互操作?

Azure active directory ADB2C用户流和IEF策略不可互操作?,azure-active-directory,asp.net-core-webapi,azure-ad-b2c,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.onm

我有一个.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策略协同工作的一种方法吗?

@Raj

不同的策略有自己的签名,并且不能相互使用,除非您在.net中禁用签名验证

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

/v2.0/.众所周知的/openid配置

不同的策略有自己的签名,并且不能相互使用,除非您在.net中禁用签名验证

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


/v2.0/.众所周知的/openid配置

据我所知,当您创建自定义策略(IEF)时,设置的一部分要求您创建/添加签名和加密密钥:

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

理论上,如果您可以下载内置策略使用的签名/enc密钥(用户流),那么您可以将它们导入自定义策略,理论上它们应该匹配并验证。但是,由于用户流(内置)策略实际上是从microsoft的租户继承的,并且使用microsoft公钥/私钥,因此我认为没有办法提取这些策略。 这意味着,可能不可能让ief和userflow策略都验证相同的密钥签名。
如果您需要这两种策略,唯一剩下的解决方案是根据Christopher的建议忽略验证,但这不是强烈建议的。。因为验证是有原因的。。因此,这将是一个安全风险。

据我所知,当您创建自定义策略(IEF)时,设置的一部分要求您创建/添加签名和加密密钥:

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

理论上,如果您可以下载内置策略使用的签名/enc密钥(用户流),那么您可以将它们导入自定义策略,理论上它们应该匹配并验证。但是,由于用户流(内置)策略实际上是从microsoft的租户继承的,并且使用microsoft公钥/私钥,因此我认为没有办法提取这些策略。 这意味着,可能不可能让ief和userflow策略都验证相同的密钥签名。
如果您需要这两种策略,唯一剩下的解决方案是根据Christopher的建议忽略验证,但这不是强烈建议的。。因为验证是有原因的。。因此,这将是一个安全风险。

“将WebApi设置为使用IEF策略之一”可以更详细地表达吗?这一步是如何完成的?您是如何从IEF策略生成令牌的?你能提供代码吗?基本上,如果我做一个文件>新建WebAPI项目并选择个人帐户,你可以输入租户名称、客户ID和“SignupSigningPolicyId”的唯一1个策略。例如,如果在此处使用用户流策略,但传入的令牌是从IEF策略(同一租户)生成的,则会出现签名失败不匹配错误。我使用入门指南“设置WebApi以使用其中一个IEF策略”生成了IEF令牌,可以更详细地表达吗?这一步是如何完成的?您是如何从IEF策略生成令牌的?你能提供代码吗?基本上,如果我做一个文件>新建WebAPI项目并选择个人帐户,你可以输入租户名称、客户ID和“SignupSigningPolicyId”的唯一1个策略。例如,如果在此处使用用户流策略,但传入的令牌是从IEF策略(同一租户)生成的,则会出现签名失败不匹配错误。我使用入门指南生成了IEF令牌。我查看了这些OpenID文档,了解了我的用户流和IEF策略,没有一个包含签名?(他们都提到id_token_signing_alg_values_supported=RS256)。对于我的webapp集成,我使用了它,它已经被存档并替换为新的UI集成库。然而,在没有禁用任何签名的情况下,这似乎工作得很好,所以我在这里有点迷茫。在Azure Active Directory B2C中,自定义策略主要用于解决复杂的场景。对于大多数情况,建议使用内置的用户流。在这种情况下,该评论没有提供任何实际帮助:)我查看了这些OpenID文档,了解我的用户流和IEF策略,但没有一个包含签名?(他们都提到id_token_signing_alg_values_supported=RS256)。对于我的webapp集成,我使用了它,它已经被存档并替换为新的UI集成库。然而,在没有禁用任何签名的情况下,这似乎工作得很好,所以我在这里有点迷茫。在Azure Active Directory B2C中,自定义策略主要用于解决复杂的场景。对于大多数情况,建议使用内置的用户流。在这种情况下,该注释没有提供真正的帮助:)如果是这种情况,这确实需要在Microsoft文档中澄清。我认为很多人会从用户流开始