微软 Teams Adal 静默认证失败(iframe 沙箱)

7
我们为Microsoft Teams开发了一个自定义选项卡,并希望使用Adal进行静默身份验证,如此文章中所述https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/authentication/auth-silent-aad。在开发环境中它工作得很好,但是在生产环境中失败了!控制台显示以下错误消息:
不安全的JavaScript尝试从URL'https://login.microsoftonline.com/common/oauth2/authorize?response_type=id_token&client_id=(...)'的帧中启动导航到源'https://teams.microsoft.com'的帧。尝试导航顶级窗口的帧被沙盒化,但未设置“allow-top-navigation”或“allow-top-navigation-by-user-activation”的标志。
我不明白为什么开发和生产环境的行为不同?我该如何解决?
谢谢

你的 "sandbox" 属性里面有什么内容? - Towkir
正如Addeladde所指出的那样,iframe是由Teams创建的:sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-pointer-lock allow-scripts allow-same-origin"。 - David Jourand
2个回答

0
将此放在您的选项卡页中。

window.onload = function () {

        if (parent.document.getElementById("extension-tab-frame")) {
            var iframe = parent.document.getElementById("extension-tab-frame");
            iframe.sandbox = 'allow-forms allow-modals allow-popups allow-pointer-lock allow-scripts allow-same-origin allow-top-navigation';
        }
    }


这会导致一个DOMException错误:Blocked a frame with origin "https://myoriginalpage.com" from accessing a cross-origin frame. - garie

0

您需要通过为sandbox属性提供某些属性值,允许在您的iframe元素上进行顶部导航。

<iframe src="yourpage.html" sandbox="allow-top-navigation"></iframe>

请查看这里了解有关这些属性值的更多信息。

2
Teams应用程序创建的iframe,有没有办法让我影响它的创建方式? - Addeladde
如果你能在该页面上添加脚本,那么是的,你可以编写脚本以获取该iframe并修改其sandbox属性。 - Towkir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接