拒绝在 asp.net MVC 应用程序的 <iframe> 中显示“login.microsoftonline.com”

cod*_*als 6 authentication iframe x-frame-options openid-connect

我正在开发一个项目,它有两种不同的解决方案。“https://example.com”,在里面我们用来显示不同项目的页面,比如“https://example123.com”。

我已在“https://example123.com”项目上实施了 Azure AD 身份验证。因此,一旦到达该 url,AzureAD 页面就会显示以进行身份​​验证。

现在我需要在 example.com 中进行相同的身份验证,即使用 iframe 连接到项目 example123.com 但出现问题 - login.microsoftonline.com 拒绝连接。

另外,在控制台上,我收到错误 - 拒绝在框架中显示“https://login.microsoftonline.com/......”,因为它将“X-Frame-Options”设置为“拒绝”。

请帮忙解决这个问题。提前致谢。

Gar*_*her 1

默认情况下,几乎每个授权服务器登录屏幕都会拒绝在 iframe 上呈现,以防止点击劫持。因此,在 iframe 上重定向将不起作用。在 Azure 中可能有一种方法允许这样做,但我对此表示怀疑。

不确定是否有适合您的解决方案,而且这不是您要求的简单事情。一般来说,您需要尽早进行安全设计。有几种可能性:

第1部分

让您的托管域兼容这些线路,以便 cookie 或令牌(无论您使用什么)都可以在应用程序之间共享:

第2部分

在内部(iframe)应用程序中定义一个接口来处理登录。当内部应用程序检测到它正在 iframe 中运行时,它需要使用一个实现来要求主(主机)应用程序代表其执行登录重定向等操作。

然后,您可能需要跨 2 个应用程序(具有站点范围)发出 cookie,或使用 postMessage API 将令牌发送回 iframe 应用程序(这存在潜在的安全风险)。