在Web应用程序的用户界面中,我们将视频加载到iframe中。该视频在Office 365 / SharePoint服务器上。
如果用户未登录由Azure ADAL管理的组织门户,则将在iframe中加载登录屏幕。如果用户已经登录,则视频可以正常播放。
到目前为止很好。但是我们的管理层不希望将iframe重定向到登录页面,而是在iframe上设置Cookie并加载视频。
我们说不可能在iframe上设置cookie并发送请求,并且我们问如何才能将Microsoft cookie放入应用程序中?架构师说有一个剩余端点,它将提供cookie的详细信息。但是我们仍然不知道如何设置它。
真的可以设置cookie并发送到Microsoft门户以避免身份验证吗?我相信这是不可能的,但是架构师和管理层坚持认为我们要尝试一些事情。
答案 0 :(得分:1)
我会说不可能设置“每帧” cookie,但是我想您可以登录用户(“以某种方式”,见下文),然后重新加载帧(或在尝试加载帧之前检查身份验证) )。
静默登录的想法:
但是要手动设置cookie的想法是:由于安全问题,浏览器不允许您(= Web应用程序)读取或写入另一个域(= SharePoint服务器)的cookie。
答案 1 :(得分:0)
有点。 我们通过使用代理服务器完成了这样的事情。
简而言之,代理(托管在弹性 beantalk 中)会注意到一个请求进来,检查它的 cookie 为我们设置的确定用户登录的cookie,如果它发现请求中的 cookie,它会调用一些授权端点,以便能够将新的 cookie 附加到响应(set-cookie 标头)上,然后我们将使用它来确定如何继续。代理是用 node.js/express 编写的。
只要您在设置 cookie 时最终在 cookie 选项上设置了 sameSite: 'None',它就应该可以工作,即使托管 iframe 的站点位于另一个域中。
我不确定这是否与您的大局有关,但可能会给遇到类似问题的其他人一些启发。