1

我在 Microsoft Edge 中收到以下错误。但是,在 Chrome 中运行良好。下面是实现的细节。User.Identity.Name 在主页的页面加载中捕获用户的登录电子邮件

  1. Azure 中托管的 Asp.Net Webforms 应用程序。
  2. 启用 Azure AD 身份验证。
  3. 通过 IFRAME 在 Intranet 网页上加载此 Web 应用程序。
  4. Intranet 通过 OKTA 启用了 SSO。

在此处输入图像描述

4

2 回答 2

2

你遇到了什么X-Frame-Options

HTTP 响应标X-Frame-Options头可用于指示是否应允许浏览器以、 或<frame>呈现<iframe>页面。网站可以使用它来避免点击劫持攻击,方法是确保其内容不会嵌入到其他网站中。<embed><object>

来源:MDN 上的 X-Frame-Options

如果您拥有要在 IFrame 中运行的页面,请确保为X-Frame-Options标头显式设置正确的值。如果不这样做:为什么要在 IFrame 中显示它?

如果您遇到的 Chrome 的行为与 Edge 不同,请查看标头的使用方式以及 Chrome 是否支持它。例如,ALLOW-FROMChrome 不支持。

更多信息: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 方法

来源:单页应用程序:登录和注销

于 2020-05-25T15:03:17.270 回答
0

您应该尝试检查X-Frame-Options标题。标X-Frame-Options头可用于控制是否可以将页面放置在 IFRAME 中。

此外,请注意此令牌必须作为 HTTP 标头发送,如果在 META HTTP-EQUIV 标记中找到该指令将被忽略。您可以参考这篇文章了解更多信息。

如果您可以控制发送 iframe 内容的服务器,您可以参考这篇文章这个关于配置值的链接。

更多信息:如何在 iframe 上设置“X-Frame-Options”?

于 2020-05-26T03:30:15.853 回答