我在 Microsoft Edge 中收到以下错误。但是,在 Chrome 中运行良好。下面是实现的细节。User.Identity.Name 在主页的页面加载中捕获用户的登录电子邮件
- Azure 中托管的 Asp.Net Webforms 应用程序。
- 启用 Azure AD 身份验证。
- 通过 IFRAME 在 Intranet 网页上加载此 Web 应用程序。
- Intranet 通过 OKTA 启用了 SSO。
我在 Microsoft Edge 中收到以下错误。但是,在 Chrome 中运行良好。下面是实现的细节。User.Identity.Name 在主页的页面加载中捕获用户的登录电子邮件
你遇到了什么X-Frame-Options
。
HTTP 响应标
X-Frame-Options
头可用于指示是否应允许浏览器以、 或<frame>
呈现<iframe>
页面。网站可以使用它来避免点击劫持攻击,方法是确保其内容不会嵌入到其他网站中。<embed>
<object>
如果您拥有要在 IFrame 中运行的页面,请确保为X-Frame-Options
标头显式设置正确的值。如果不这样做:为什么要在 IFrame 中显示它?
如果您遇到的 Chrome 的行为与 Edge 不同,请查看标头的使用方式以及 Chrome 是否支持它。例如,ALLOW-FROM
Chrome 不支持。
更多信息:caniuse.com 获取 x-frame-options。
我之前链接到的关于 ALLOW-FROM 的 MDN 文档:
ALLOW-FROM uri (obsolete)
这是一个过时的指令,不再适用于现代浏览器。不要使用它。在支持旧版浏览器时,页面只能显示在指定源 uri 上的框架中。
编辑:
作为您声明的补充
除了删除 Azure AD 身份验证之外,似乎没有其他选择
你不应该在 iframe 中显示任何登录页面,因为它引入了 cickjacking 问题。这不仅限于 Azure AD 身份验证,任何和所有身份验证选项都是如此。
Azure AD 身份验证也有一个弹出选项。例如:如果您使用的是 MSAL.js,则为:
您可以通过两种方式在 MSAL.js 中将用户登录到您的应用程序:
- 弹出窗口,使用 loginPopup 方法
- 重定向,使用 loginRedirect 方法
来源:单页应用程序:登录和注销