在 Office 加载项中 AAD 登录时出现 X-Frame-Option DENY 错误

问题描述 投票:0回答:2

我正在使用 Adal.js 构建 Office 加载项以实现 AAD 集成。我的加载项需要一些权限。

当我在 OneNote 中打开加载项并尝试从 adal.js 调用登录时,它请求 login.microsoftonline.com 并给出 X-Frame-Option Deny 错误。
我认为这是因为 Office 加载项在 iFrame 中运行,我该如何解决此问题?

login.microsoftonline.com/common/oauth2/authorize?response_type=id_token&cl…nt-SKU=Js&x-client-Ver=1.0.13&nonce=ced03385-f1ca-4206-bb23-6c3e8338a0d2:1 Refused to display 'https://login.microsoftonline.com/common/oauth2/authorize?response_type=id_…ient-SKU=Js&x-client-Ver=1.0.13&nonce=ced03385-f1ca-4206-bb23-6c3e8338a0d2' in a frame because it set 'X-Frame-Options' to 'DENY'.
azure-active-directory adal office-addins office-js adal.js
2个回答
8
投票

在 Office Web 插件中使用 OAUTH 流进行身份验证是一个已知问题。可以在此处找到对该问题的更好解释。

由于点击劫持在互联网上很流行, 防止登录页面显示在框架内。这 HTML 中的 X-FRAME-Options 元标记使提供商可以轻松 在广泛的或特定于域/来源的范围内实施此保护措施 基础。不可“可框架”的页面将不会以一致的方式加载 Office 插件

因此需要依赖弹窗机制。简而言之,身份验证流程将在弹出窗口上进行,以避免 iFraming 问题。

上面的链接有点过时了,因为它指出弹出窗口是一种不可避免的罪恶。微软意识到这个问题,最近提出了dialogAPI来克服这个问题。

让我们回到 Adal.js 问题。我认为您应该停止使用 adal.js,因为它不适合在我们的加载项 Web 上下文中使用。即使他们实现了弹出技术。他们不使用可用的dialogAPI。

您应该尝试利用此dialogAPI(如果可用),否则您会遇到许多问题(停用弹出窗口、安全区域等)。

您最好的选择是实现自己的流程机制或使用Office-js-helpers,如此响应

中所述

0
投票

我遇到了同样的问题,但在我们的一个网站中使用 iframe 来访问我们另一个网站中的另一个页面。我的 chrome 设置设置为允许第三方,并且广告拦截已关闭。我在我们的两个网站中都使用 Microsoft azure 身份验证。有解决办法吗?站点 A 的页面是 https://sitea.com/Portal/Index/automapper,其 iframe 指向站点 B 中的“https://siteb.com/automapper”端点。站点 A 使用 Framework 4.8 和站点B 是 Blazor .NET 8 站点。帮忙吗?

© www.soinside.com 2019 - 2024. All rights reserved.