使用ASWebAuthenticationSession和SFSafariViewController的iOS SSO

xmakbtuz  于 2023-08-08  发布在  iOS
关注(0)|答案(1)|浏览(155)

我们有一个原生应用程序,我们正在原型化它需要:

  • 通过OIDC(OAUTH2)验证用户以公共客户端身份获取访问令牌
  • 从我们的网站渲染应用内的Web内容,该网站受与从上面获取的访问令牌相同的IdP(Keycloak)保护。

我们使用的是AppAuth库,它遵循RFC 8252的最佳实践,使用外部用户代理,使本机应用程序无法窥探用户凭据。作为iOS 13+,它使用ASWebAuthenticationSession。这部分对我们来说很完美。
我们有问题时,然后试图通过SFSafariViewController访问我们的受保护的网站。IdP从ASWebAuthenticationSession设置的Cookie不可见。无论cookie是会话cookie还是持久cookie,情况都是如此。因此,用户必须再次进行身份验证。
我对各种类型的cookie共享状态(持久与会话)与各种版本的iOS和各种方法(ASWebAuthenticationSessionSFSafariViewController+WKWebView)感到非常困惑。我似乎找不到确定的矩阵。
从花时间研究,感觉就像与目前的cookie限制在iOS上(安全+隐私[好事!我不能完成我想要的。这感觉就像是一件很平常的事情,我希望我做错了什么。
因此,以下是几个问题:
1.是否可以在同一应用程序中允许在ASWebAuthenticationSession和SFSafariViewController之间共享持久和/或会话Cookie?
1.如果没有,是否有其他方法/模式?
谢谢你,谢谢

8yoxcaq7

8yoxcaq71#

截至iOS 16,我不知道如何在ASWebAuthenticationSessionSFSafariViewController之间共享cookie。
我为自己的SSO实现提供的解决方案是使用SFSafariViewController进行初始登录和随后的应用浏览。
我遇到的这种方法的唯一主要缺点是,SFSafariController持久化的cookie可用于SFSafariController,这意味着如果用户打开Safari应用程序,他们将需要重新验证(而不是ASWebAuthenticationSession,它确实与Safari应用程序共享cookie)。
我真的希望苹果能够改进他们关于SSO的文档和实现。

相关问题