gpt4 book ai didi

ios - 我可以在 SFSafariViewController 中从 Safari 获取 cookie 吗?

转载 作者:行者123 更新时间:2023-12-01 16:11:38 26 4
gpt4 key购买 nike

tl;博士;看下面的问题

在我的应用程序中,我有一个使用遵循 OAuth 2.0 流程(使用 AppAuth 库)的 SFSafariViewController 和 ASWebAuthenticationSession 的登录。

登录正常,cookie 与 Safari 共享。由于 cookie 共享,如果用户使用 Safari 应用程序,他们将自动登录。

但是,回到应用程序,如果我再次启动 SFSafariViewController,cookie 就会丢失。这让我很吃惊,因为我认为 cookie Store 对于 SFSafariViewController 和 Safari 是一样的,而且它显然在登录期间从 SFSafariVC 到 Safari 应用程序的方向起作用。它是否打算以相反的方式工作 - 从 Safari 到 SFSafariViewController,还是一个错误?

我没有在文档中找到明确的陈述。当然,我没有将临时 session 设置为 true,但根据文档,它会做与我想要实现的相反的事情:

When not using an ephemeral session, all cookies except session cookies are available to the browser.

我还发现了一些相关的雷达,例如 http://www.openradar.me/33323462http://www.openradar.me/radar?id=5036182937272320或者这个 stackoverflow 帖子:Why is SFSafariWebViewController not sharing cookies with Safari properly?但他们没有回答我的问题。

根据 this comment如果 cookie 有到期日期(设置为 future 日期),它可能会起作用。我验证了 cookie - 它们都有 future 的到期日。

我的问题:SFSafariViewController 没有从同一应用程序或 Safari 中的早期 SFSafariViewController 实例获取 cookie,我是不是做错了什么,或者这是预期的行为?

最佳答案

要求

因此,您似乎需要一个解决方案来从移动应用程序调用安全的 Web 内容,并避免额外的登录。这是一个常见的要求,我将向 my blog 添加一些内容在接下来的一个月左右的时间里讨论这个话题。

行业现状

上面的问题是,由于浏览器安全措施,例如 Intelligent Tracking Prevention,第三方 cookie,例如由身份提供者发布的那些,最近经常被默认删除。更改 - 在 Safari 中默认打开:

enter image description here

Cookie 属性

值得检查您的 cookie 是否使用 SameSite=None 发布,这将为您提供基于第三方 cookie 的解决方案的最佳选择。

移动优先设计

在 OAuth 世界中,为了满足要求,很可能需要从移动 UI 向 Web UI 发送 token ,这当然有一些先决条件需要设计为:

  • Web UI 必须使用 token
  • Web UI 必须根据主机使用不同的 token 处理策略

选项 1

一种选择是使用移动 WebView 来显示网络内容 - 请参阅下面的代码:

选项 2

另一种选择是将表示 token 的内容从移动应用程序发送到 Web UI 的查询字符串参数中,在这种情况下,您需要确保:

  • 网络服务器日志中没有记录可用的 token
  • token 只能一次性使用

一个典型的实现看起来像这样:

  • 移动用户界面调用/api/token/encrypt 端点
  • API 将 token 哈希存储在数据库中,并返回一个生存时间短的加密值
  • token 从移动应用程序发送到 Web UI
  • Web UI 调用/api/token/decrypt 端点以获取真实 token
  • API 的解密实现删除数据库条目

关于ios - 我可以在 SFSafariViewController 中从 Safari 获取 cookie 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62997525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com