iframe - B2C 嵌入式登录体验
问题描述
我按照指南使用 b2c 和 IFrame(嵌入式登录文档)设置嵌入式登录体验。
但是,我不太确定如何获取访问令牌并在整个应用程序中使用它。到目前为止,我得到了 IFrame 来显示登录/注册表单,并且登录/注册工作完美无缺。但在那之后,IFrame 会重定向到应用程序的登录页面,而我的“父”页面没有收到 ID 令牌。
(“父”页面的 url 与 iframe 授权请求的重定向 url 匹配)
IFrame 的 src 是我的 b2c 策略的授权请求 url。
PS:查看网络选项卡我可以在 b2c 策略的“已确认”响应 (redirect-url/#id_token=eyJ0eX...) 中看到已发布且有效的 ID 令牌。
最佳最大
解决方案
这就是为什么在文档中指出使用 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”页面,并让它为您进行重定向。
以下是使用预构建示例的几个示例:
- (.netcore,使用重定向脚本)https://github.com/helshabini/active-directory-aspnetcore-webapp-openidconnect-v2/tree/master/1-WebApp-OIDC/1-7-B2C-Embedded
- (.net 框架,使用登录完成页面)https://github.com/azure-ad-b2c/sign-in-with-iframe
- (nodejs,使用重定向脚本)https://github.com/techjazz-MS/B2C_EmbeddedSignin_nodejs_passportjs_Sample
推荐阅读
- html - 按下回车键或单击搜索按钮时如何显示或隐藏表格
- awk - 根据bash中的两列以上计算唯一值的数量
- powershell - Using copy-item in powershell to transfer file on a shared drive
- node.js - Frequent timeout error on Node.js when connecting to an SQL Server instance through mssql
- gitlab-ci - Trigger pipeline/job when merge request state changes (WIP to "ready")
- security - Service account with org viewer role not able to perform any actions
- c++ - boost::asio::async_write_some - sequential function call
- sql - SQL Need days of selected week as columns
- javascript - 从 UInt8Array (react-pdf) 在 React 中显示 PDF 的问题
- java - 为另一个操作系统创建一个 Spring Native 应用程序