首页 > 解决方案 > 从在 iframe 中打开的 topdesk 站点获取身份验证

问题描述

我有一个 topdesk 板,并通过 url 连接了外部站点,因此我的站点是从 topdesk 在 iframe 中打开的。

我的任务是从 topdesk 获取登录用户(至少是其电子邮件)。到目前为止,我已经找到了这个 api:https ://developers.topdesk.com/explorer/?page=supporting-files#/Persons/getLoggedInPerson

但它需要从登录名/密码获取身份验证密钥,但我不从 UI 端使用登录名/密码。

所以我没有看到任何直接的解决方案,但也许我可以以某种方式从父桌面视图或类似的东西中获取 cookie。

标签: api

解决方案


您尝试做的事情是不可能的,因为这将是一个巨大的安全漏洞。如果您能够进入 iFrame 并与嵌入文档进行交互,或者从嵌入页面转到其父页面并与其文档进行交互(例如检索会话 cookie、读取页面内容等),它会接管某人的会话并做恶意的事情变得非常容易。

例如,作为一个恶意行为者,我可以在我的网站上放置一个小的 iFrame 来加载 TOPdesk。如果您已经登录 TOPdesk,那么您也将登录我网站上的 iFrame。如果我能够与该 iFrame 中的 cookie 交互,我可以检索您的会话 cookie 并冒充您。

因此,您只能在此级别上与同源的 iFrame 进行交互,也称为同源策略

但是,即使您位于同一来源,您仍然无法读取 TOPdesk 的会话 cookie,因为它们被设置为HttpOnly。这意味着 cookie 只能由浏览器本身使用,不能与 JavaScript 进行交互。

所以,对我来说,听起来你唯一的选择就是通过应用程序密码以官方方式与 API 交互。但是,对于您要实现的目标,这可能是不可能的。你能多谈谈你的用例吗?


推荐阅读