在iframe

时间:2017-06-01 12:33:40

标签: oauth autodesk-forge

我们正在尝试将Autodesk Forge Viewer嵌入到我们现有应用中的BIM 360 Team数据中。我们在iframe中执行3-legged授权工作流程时遇到问题。我们对iframe而非弹出窗口(window.open())或重定向当前窗口(location.assign())的理由如下:

  1. 将当前应用窗口重定向到授权会中断应用工作流程。应用启动授权不是一种选择。现有工作流程中的任何一点都可能需要查看器,或者根本不需要查看器,只有在需要查看器之前才能触发授权。

  2. 在许多(桌面)浏览器中默认禁用在新窗口中打开授权(弹出窗口)。要求用户启用弹出窗口是一种选择,但绝对不是用户友好的。此外,移动环境中的多窗口浏览并不总是实现(例如在应用内浏览器中),这使得这不是一种选择。

  3. iframe中的授权可以克服这些缺点,同时提供简单,不引人注目且一致的用户体验。

    我们按照herehere中的说明关注工作流程。登录页面(第二链接>步骤1>第一张图片)在iframe中显示正常,并且用户能够输入他/她的Autodesk ID凭证。之后,用户将被重定向到OAuth许可页面。同意页面(第二个链接>步骤1>第二张图片)与标题X-Frame-Options: SAMEORIGIN一起提供,其在iframe中显然无法加载:Refused to display 'https://auth.autodesk.com/as/NH3Mc/resume/as/authorization.ping?opentoken=...' in a frame because it set 'X-Frame-Options' to 'deny'。但是,如果用户事先同意(例如在单独的窗口中),则跳过同意页面,并立即将用户重定向到提供的回调uri以及授权代码(响应代码302 Found,标题{{1 }})。

    这引出了一个问题,Location: callback uri + code是否是按设计和故意的?在此方案中,在允许登录页面的同时禁用iframe中的OAuth同意页面有什么好处?是否可以以某种方式禁用标头或为Autodesk Forge App中定义的原点添加例外作为回调URL?

    我们是否缺少任何其他选项来提供适用于桌面和移动平台的不引人注目且一致的授权?

0 个答案:

没有答案