【问题标题】:iOS Outlook Add-in not respecting Set-Cookies header for external sites in DialogiOS Outlook 加载项不尊重对话框中外部站点的 Set-Cookies 标头
【发布时间】:2020-04-27 16:57:18
【问题描述】:

我有一个 Outlook Web 加载项,它使用 Office.js 对话框 API 打开一个对话框,该对话框导航到外部(即不在我的加载项域中)身份验证登录页面。当该页面在对话框中加载时,它会将带有返回 URL 值的 Set-Cookie 标头传回我的加载项中的页面,然后重定向到不同的外部站点以执行 SAML 身份验证(无论用户配置为他们的SAML 提供商)。登录完成后,用户将导航到身份验证登录域上的完成页面,然后该页面将读取最初设置的 cookie 并使用 cookie 中的 URL 重定向回加载项。

这在桌面平台上运行良好,但是当通过 Outlook IOS 应用程序使用加载项时,我看到 Set-Cookies 标头似乎在流程完成时不起作用页面没有 cookie。

例如(使用占位符 URL),从 https://my-addin.com/home 加载的加载项函数文件

从测试看来,当加载项域中的页面加载到对话框中时,Set-Cookie 标头适用于它们,即,如果我在打开对话框的页面上传回 Set-Cookie,然后导航到另一个页面我的加载项域 cookie 将按预期设置并且可以从第二页读取。但是对于加载项域之外的页面,它似乎无法设置 cookie 以供以后使用。

Set-Cookie: ReturnURL=https://my-addin.com/finalize;Version=1;Path=/auth;Domain=auth-helper;Max-Age=86400;HttpOnly;Secure;SameSite=None
  • 返回的示例标头似乎不适用于 iOS 插件对话框。

任何人都可以在这里想到任何解决方法、原因或解决方案吗?

  • 我无法修改加载项之外的页面行为。

  • 我重定向到的页面将 X-Frame-Options 设置为 sameorigin,因此我无法将其加载到对话框之外的隐藏 iFrame 中。

  • 此流程适用于桌面版 Safari、Chrome、IE、Windows Outlook 客户端、Mac Outlook 客户端,早在 2019 年 9 月就可以在 iOS 上运行,这表明平台本身发生了变化。

    李>
  • 在 iOS 设备上,Safari 设置下的“防止跨站点跟踪”和“阻止所有 Cookie”设置均处于关闭状态。

【问题讨论】:

  • 您使用的是哪个 iOS 版本?您是否可以分享您的插件的精简版本,以便我们可以尝试在最后重现该问题?
  • Outlook 应用程序是 4.34.1。 iOS 12.4.1。我无法为此提供插件的精简版本,因为我没有任何可公开访问的外部站点供您使用,很遗憾。加载项代码应打开一个包含 Office.context.ui.displayDialogAsync 的对话框,指向一个对话框页面。然后,对话框页面应重定向到不同域上的站点,该站点传回 Set-Cookies 标头。然后转到同一个外部域上的另一个页面并尝试访问应该设置的 cookie。

标签: office-js outlook-web-addins


【解决方案1】:

iOS 设备从 OS 12.4.1 升级到 13.4.1,不再出现此问题。因此,我们将不得不建议用户升级 iOS,因为我们还没有找到任何其他解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多