azure-ad-b2c - Azure AD B2C - 运行“自助密码重置”后,自定义策略“会话”处于不正确状态
问题描述
我们有一个基于SocialAndLocalAccounts启动包的自定义策略。
我们一直在添加Home Realm Discovery
基于此示例HomeRealmDiscovery-Modern的支持,以将使用第三方提供商的用户重定向到正确的登录页面 (IdP)
我们还增加了对通过第三方身份提供商登录的用户Domain Hints
完全跳过登录页面的支持。
该政策根据官方文档使用新发布的自助密码重置。
有什么问题?
当用户进行“自助密码重置”时,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
解决方案
尝试这个:
- 在
CreateidentityProvidersCollectionLogic
更改SM-Noop
为SM-DOMAIN
. - 补充
SM-DOMAIN
:
<PersistedClaim ClaimTypeReferenceId="identityProviders" />
推荐阅读
- opencv-python - 使用 OpenCV 提取和分割地板部分
- java - 如何在 Android 中使用 AlarmClock.ACTION_DISMISS_ALARM
- android - MediaRouter 和 Palette 与 NetStandard2.1 不兼容
- python - discord.py 中的 Tempmute 命令不会删除 muterole
- winapi - 运行“locust -V”时出现问题
- cassandra - 是否可以使用 dsbulk 备份和恢复 Cassandra 集群?
- javascript - 带有两个键的导航在本机反应中不起作用
- c++ - 通过引用传递的变量在函数范围内更改,但在主范围内未更改
- spring-boot - 将数据从 AuthenticationProvider 传递到成功 url spring security
- drupal-8 - 手动保存节点字段时如何应用 Drupal 的 Ckeditor HTML 过滤器?