使用邀请注册策略注册后自动登录

时间:2021-06-18 12:33:33

标签: azure-ad-b2c

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

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

    我的注册网址: Signup url with id_token_hint

    令牌甚至被 jwt.ms 捕获,但 angular 应用程序不考虑它。 token after signup screen captured by jwt.ms

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

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

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

我的 API 中的配置:Config in my backend API 启动:In startup file

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

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

正常登录流程的令牌:Signin flow token 受邀电子邮件注册令牌:Signup flow token

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

1 个答案:

答案 0 :(得分:0)

  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。