首页 > 解决方案 > B2C 嵌入式登录体验

问题描述

我按照指南使用 b2c 和 IFrame(嵌入式登录文档)设置嵌入式登录体验。

但是,我不太确定如何获取访问令牌并在整个应用程序中使用它。到目前为止,我得到了 IFrame 来显示登录/注册表单,并且登录/注册工作完美无缺。但在那之后,IFrame 会重定向到应用程序的登录页面,而我的“父”页面没有收到 ID 令牌。

(“父”页面的 url 与 iframe 授权请求的重定向 url 匹配)

IFrame 的 src 是我的 b2c 策略的授权请求 url。

PS:查看网络选项卡我可以在 b2c 策略的“已确认”响应 (redirect-url/#id_token=eyJ0eX...) 中看到已发布且有效的 ID 令牌。

最佳最大

标签: iframeazure-ad-b2cazure-ad-b2c-custom-policy

解决方案


这就是为什么在文档中指出使用 window.top.location.reload(); 这样一旦登录完成,页面就会重新加载,并且您可以正常捕获页面逻辑中的 id 令牌。

例如,您可以在布局中使用以下脚本:

<!-- Because the authorization flow happens inside the iframe, we need to reload the main page.-->
<script>
    if (document.referrer.startsWith('@Configuration.GetSection("AzureAdB2C")["Instance"]'))
        window.top.location.reload();
</script>

另一种选择是,您可以将登录请求的重定向 URL 设置为“LoginCompleted”页面,并让它为您进行重定向。

以下是使用预构建示例的几个示例:


推荐阅读