0

这个问题与这个问题有关:AngularJS hash #problem after Azure B2C Sign Up policy redirects to application

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

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

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

对于该Sign Up策略,用户单击其电子邮件上的邀请链接,该链接将指向 B2CSign Up策略。用户单击“创建”按钮,然后他们被重定向回主应用程序的根地址,并使用#id_token来自 B2C 的发送,如下所示:

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

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

关于如何克服这个问题的任何想法?

4

2 回答 2

2

您引用的该邀请示例会生成一个直接指向 Azure AD B2C 终结点的邀请链接。

这种邀请实现的主要缺点是单页应用程序不调用注册流程,因此,注册请求和注册响应之间没有建立关联。

此邀请示例演示了另一种方法,该示例生成一个直接指向应用程序端点的邀请链接,其中包含:

  • 受邀用户的电子邮件地址
  • 邀请到期,以及
  • 基于 HMAC 的签名

当邀请链接打开时,此应用程序端点验证基于 HMAC 的签名和邀请过期,如果它们有效,则它将受邀用户重定向到带有 ID 令牌的注册流程。

于 2019-07-18T00:20:12.867 回答
0

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

理想情况下,此重定向 uri 应指向加载完整 SPA 的轻量级 html 页面。它应该只处理来自权限的哈希,将值存储在 sessionStorage 或 localStorage 中,然后重定向到 SPA。这应该允许更迅速的行为并防止对哈希表示的内容的重叠关注。

于 2019-07-18T14:16:21.957 回答