首页 > 解决方案 > 使用邀请注册策略注册后自动登录

问题描述

因此,我目前通过链接https://github.com/azure-ad-b2c/samples/tree/master/policies/invite使用 azure b2c 的邀请策略,并且能够使用 id_token_hint 成功生成注册链接。我们没有通过电子邮件发送链接,而是使用 API 将链接发送到 Angular 应用程序,然后在单击注册按钮时触发链接。尽管流程在技术上运行良好,但我们的团队正在考虑实施两项改进以使用户体验更好。

  1. 第一个是在成功注册后,我们设置的重定向 uri 被触发并且浏览器重定向到它,但是由于该页面正在执行一些 API 调用,因此这是受保护的,并且我们的应用程序的登录用户流被触发。如果我们使用 b2c 本身提供的用户流程进行注册,我们也会在同一流程中登录,但在我们的注册情况下,登录是我的团队正在考虑删除的额外步骤。我们有什么办法可以做到吗?我已经阅读,因为流程不是由我们的网站发起的,邀请注册返回的令牌被忽略。那么有没有办法解决这个问题?

    我的注册网址: 带有 id_token_hint的注册网址

    令牌甚至被 jwt.ms 捕获,但角度应用程序不考虑它。 jwt.ms 捕获的注册屏幕后的令牌

  2. 其次,有什么方法可以启用电子邮件验证,就像在 b2c 的默认注册流程中一样,在前进之前将 otp 发送到电子邮件?根据微软文档,您可以通过在下面显示的策略文件中的元数据下更新这段代码来做到这一点。默认情况下它是“False”,所以我确实将其更改为“True”,但验证流程仍未启用。如果我在这里遗漏任何东西?

<Item Key="EnforceEmailVerification">True</Item>

编辑:既然你问我如何在我的 API 中添加身份验证,我在下面添加了一张图片。这适用于正常的登录流程。同时,我将浏览您提供的链接并检查它是否解决了我的问题。

在我的 API中配置:在我的后端 API 中配置 启动:在启动文件中

然后我通过指定 jwt 选项和附加配置来使用 AddMicrosoftIdentityWebApi。

此外,我在这两种情况下都附上了解码的令牌。孩子不同,注册令牌还有一个字段 x5t。

正常登录流令牌:登录流令牌 邀请电子邮件注册令牌:注册流令牌

这些标记中几乎所有其他字段都相似。

标签: azure-ad-b2c

解决方案


  1. 我认为您应该考虑重新设计您的 API,以便它返回一个 id_token (不是链接)。然后 Angular 应用程序应该调用 API 并从 Angular 应用程序启动 B2C_1A_signup_invitation 流,并传递接收到的 id_token。

  2. 尝试将 github 示例中的第 85 行从 更改<OutputClaim ClaimTypeReferenceId="ReadOnlyEmail" Required="true" /><OutputClaim ClaimTypeReferenceId="ReadOnlyEmail" PartnerClaimType="Verified.Email" Required="true" />. 并将 EnforceEmailVerification 设置为 True。


推荐阅读