如何为自定义 B2C 邀请策略注册 MSAL JS 回调?

How to register MSAL JS callback for the custom B2C Invite policy?

这个问题与这个问题相关:

以下是邀请自定义策略的详细信息:https://github.com/azure-ad-b2c/samples/tree/master/policies/invite

Sign Up 邀请过程是通过电子邮件完成的,也就是说,用户没有使用该应用程序并在 SPA AngularJS 应用程序上单击 link。

Sign In 工作得很好,因为用户在 AngularJS SPA 应用程序中时会被重定向到 Sign In 策略。当 MSAL JS 代码已配置时,他们实际上单击了一个按钮。

对于 Sign Up 政策,用户单击其电子邮件中的邀请 link,此 link 导致 B2C Sign Up 政策。用户单击“创建”按钮,然后他们将被重定向回主应用程序的根地址,并带有从 B2C 发送的 #id_token,如下所示:

https://cooldev.azurewebsites.net/#id_token=tokenhere

问题是 SPA 应用程序没有注册回调来处理来自 B2C 策略的重定向。

关于如何克服这个问题有什么想法吗?

That invitation sample that you have referred to generates an invitation link 直接指向 Azure AD B2C 终结点。

此邀请实施的主要缺点是 single-page 应用程序不调用 sign-up 流程,因此 sign-up 请求与 [=30] 请求之间存在关联=] 未创建响应。

this invitation sample which generates an invitation link 演示了另一种方法,它直接指向应用程序端点并包含:

  • 受邀用户的 e-mail 地址
  • 邀请过期,并且
  • 一个HMAC-based签名

当邀请 link 打开时,此应用程序端点 validates HMAC-based 签名和邀请过期,如果它们有效,则将受邀用户重定向到sign-up 使用 ID 令牌流动。

用于登录策略的重定向 uri 是什么?相同的重定向 uri 可能应该用于邀请 link 注册策略。我不确定为什么重定向 uri 适用于一种策略而不适用于另一种策略。在这两种情况下,它只是从您的 OIDC 权限重定向到哈希中带有令牌信息(或错误消息)的 uri。您可能必须设置处理散列的代码以忽略不匹配的 state.

理想情况下,此重定向 uri 应指向轻量级 html 页面,该页面 不会 加载完整的 SPA。它应该只处理来自权威机构的散列,将值存储在 sessionStorage 或 localStorage 中,然后重定向到 SPA。这应该允许更迅速的行为并防止哈希代表的重叠问题。