我已经在angular 4中创建了应用程序,并且我试图将Tableau仪表板嵌入到应用程序中。
嵌入的Tableau仪表板正在提示登录。
<iframe src="https://tableauserver/view/dashboard/12345" sandbox="allow-top-navigation allow-same-origin allow-scripts allow-forms allow-popups"></iframe>
但是,当我们在新选项卡中打开相同的链接时,确实可以使用sso对它进行身份验证并打开仪表板。 tablue link in addressbar
当我们首先在一个选项卡中打开Tableau仪表板,然后在新选项卡中打开应用程序时,则显示仪表板。
有人可以建议如何在iframe中使用sso身份验证
答案 0 :(得分:0)
这是一项已知的安全功能,可以防止CORS(跨域资源共享)和CSRF(跨站点请求伪造)安全问题。在使用iframe和SSO(不仅限于Tableau)的浏览器中,它是一种特定的攻击媒介,因此大多数浏览器都不允许。
根据您的网站设置和您愿意承担的风险级别,您可以使用三个选项。
选项1(最佳选择):不要使用iframe。而是在浏览器中单击Viz上的“嵌入”按钮时,使用Tableau提供的<embed>
标签。参见https://onlinehelp.tableau.com/current/pro/desktop/en-us/shareworkbooks.htm#shareworkbooks.html。
选项2(不建议使用):关闭Web服务器上的CSRF保护。使用此风险自担风险。基本上,不要这样做。我在这里列出是出于教育目的。
选项3(安全,但需要更多工作):使用具有可信认证的Tableau Javascript API将可视化效果嵌入到网页中。需要很多工作; <embed>
标签要容易得多。
我们选择了选项1,此后没有任何问题。