未使用身份服务器在 iOS 上设置 Cookie
Cookies not being set on iOS using identityserver
我有一个使用 ODIC 授权代码流的移动应用程序。我们的服务器实现使用的是 Identity Server 4。
移动应用打开浏览器 window,我可以很好地登录到第 3 方提供商,然后它会重定向到我们身份服务器上的 /signin-adfs
,这会设置一些 idsrv.external
cookie 和 returns 到 /External/Callback
的 302。浏览器重定向到 /External/Callback
但不发送任何 idsrv.external
cookie,因此 Identity Server 抛出异常,因为 HttpContext.AuthenticateAsync
的结果不成功。
我有点卡在这一点上,因为我不是移动开发人员。我在其他区域部署并稍微定制了 Identity Server,但不是这部分代码。
我相信移动应用程序正在打开一个 Safari 会话来进行身份验证。这是浏览器不喜欢的 cookie(域、路径、https、安全)的问题吗?或者是其他东西? cookie 大小被分块为 4KB 一块。我不确定是什么导致了这个问题。
更奇怪的是...如果刷新浏览器 (/External/Callback
),则请求有效并且 iOS 应用程序获取代码并可以发出后续请求以获取令牌。
正在挖掘 IS4 源并看到 link 到 this issue on github。看起来它已在源代码中修复,但尚未发布。如果您在发布之前需要它,github 问题中有一些解决方法。该问题特定于 iOS 12.
我有一个使用 ODIC 授权代码流的移动应用程序。我们的服务器实现使用的是 Identity Server 4。
移动应用打开浏览器 window,我可以很好地登录到第 3 方提供商,然后它会重定向到我们身份服务器上的 /signin-adfs
,这会设置一些 idsrv.external
cookie 和 returns 到 /External/Callback
的 302。浏览器重定向到 /External/Callback
但不发送任何 idsrv.external
cookie,因此 Identity Server 抛出异常,因为 HttpContext.AuthenticateAsync
的结果不成功。
我有点卡在这一点上,因为我不是移动开发人员。我在其他区域部署并稍微定制了 Identity Server,但不是这部分代码。
我相信移动应用程序正在打开一个 Safari 会话来进行身份验证。这是浏览器不喜欢的 cookie(域、路径、https、安全)的问题吗?或者是其他东西? cookie 大小被分块为 4KB 一块。我不确定是什么导致了这个问题。
更奇怪的是...如果刷新浏览器 (/External/Callback
),则请求有效并且 iOS 应用程序获取代码并可以发出后续请求以获取令牌。
正在挖掘 IS4 源并看到 link 到 this issue on github。看起来它已在源代码中修复,但尚未发布。如果您在发布之前需要它,github 问题中有一些解决方法。该问题特定于 iOS 12.