Azure AD B2C - 运行“自助密码重置”后,自定义策略“会话”处于错误状态

时间:2021-06-16 15:00:59

标签: azure-ad-b2c azure-ad-b2c-custom-policy aad-b2c

我们有一个基于 SocialAndLocalAccounts 入门包的自定义政策。

我们一直在基于此示例 HomeRealmDiscovery-Modern 添加来自 Home Realm Discovery 的支持,以将使用第三方提供商的用户重定向到他们正确的登录页面 (IdP)

我们还添加了对 Domain Hints 的支持,以便为通过第三方身份提供商登录的用户完全跳过我们的登录页面。

该政策根据官方文档使用新发布的 Self-Served Password Reset

有什么问题?

当用户进行“自助密码重置”时,B2C 会话处于损坏状态。如果用户被重定向回 B2C,则不会选择会话。

我们怎么说呢?用例是什么?

重现步骤:

1:用户转到将用户重定向到 B2C 登录页面的应用程序。

2:用户输入本地帐户电子邮件 (Gmail),然后在下一个屏幕上单击“忘记密码”链接,该链接使用自助密码重置实现。

3:用户正确完成密码重置流程,最终进入“MFA”因子(短信代码)。

4:用户正确重定向到带有 ID 令牌的应用程序,成功登录。

6:用户点击指向使用相同自定义策略的新/不同应用程序的链接。

7:新应用将用户重定向到 B2C(相同的自定义策略)

预期结果:用户应该有一个有效的 B2C 会话,并且不会被提示再次登录,而是使用有效的 id-token 重定向到新应用程序的回调.

实际结果:用户被发送回新应用程序,回调 URL 中包含错误消息,并且由于错误重定向回 B2C 以重新登录。

错误信息:

AADB2C90051: No suitable claims providers were found. 
Correlation ID: c014004a-d2da-4000-83e5-6d648f9acccc 
Timestamp: 2021-06-16 07:17:16Z

重要提示:如果用户通过正常的登录流程(无需重置密码),一切正常。用户可以在不同的应用程序之间切换,B2C 会正确地获取会话,而不会抛出错误或提示新的登录。不同应用之间的 SSO 按预期工作。

这是完整的 TrustFrameworkExtention 文件,其中包含所有逻辑并从入门包的基本文件扩展而来: TrustFrameworkExtention.xml

1 个答案:

答案 0 :(得分:0)

试试这个:

  1. CreateidentityProvidersCollectionLogic 中,将 SM-Noop 更改为 SM-DOMAIN
  2. SM-DOMAIN 中添加:
<PersistedClaim ClaimTypeReferenceId="identityProviders" />
相关问题