Ios “使用苹果登录”中“验证用户”的目的是什么?

Ios “使用苹果登录”中“验证用户”的目的是什么?,ios,apple-sign-in,sign-in-with-apple,Ios,Apple Sign In,Sign In With Apple,在中,有两篇文章,和 我可以在通过Apple登录验证用户时获得用户标识符,但我很难理解为什么需要验证身份令牌,因为我们已经获得了用户标识符。验证身份令牌的目的是什么?获取刷新令牌的目的是什么?使用刷新令牌和访问令牌可以做什么 我在Apple开发者文档中找不到我的答案。您从Apple登录获得的用户身份令牌仅在10分钟内有效,因为它可能被拦截并用于重播攻击。可以想象,它也可以被伪造 您将用户令牌提交到验证端点,以验证它是否是由Apple颁发的有效身份令牌 您可能还需要服务器中的一些凭据集,以允许它颁

在中,有两篇文章,和

我可以在通过Apple登录验证用户时获得用户标识符,但我很难理解为什么需要验证身份令牌,因为我们已经获得了用户标识符。验证身份令牌的目的是什么?获取刷新令牌的目的是什么?使用刷新令牌和访问令牌可以做什么


我在Apple开发者文档中找不到我的答案。

您从Apple登录获得的用户身份令牌仅在10分钟内有效,因为它可能被拦截并用于重播攻击。可以想象,它也可以被伪造

您将用户令牌提交到验证端点,以验证它是否是由Apple颁发的有效身份令牌

您可能还需要服务器中的一些凭据集,以允许它颁发访问令牌;考虑用户名和密码,但是在使用Apple登录的情况下,您没有密码;这就是刷新令牌的角色

例如,您可以将用户的标识符和刷新令牌存储在服务器中以代替加密密码,还可以将其存储在应用程序的密钥链中。然后,应用程序可以向服务器提供用户标识符和刷新令牌,以获取访问令牌


在iOS上,可以使用getCredentialStateforUserID:completion:验证用户是否仍然有效。在其他系统上,您每天最多可以定期验证一次刷新令牌,以确保用户帐户在Apple中仍处于良好状态。

因此对于自定义REST API,您是否建议将用户标识符和刷新令牌从客户端发送到服务器?验证刷新令牌等同于“发布新访问令牌”?getCredentialState函数检查什么?不,您永远不会获得新的访问令牌。刷新令牌类似于密码;您可以无限期地存储它。每天一次,您可以验证它是否仍然有效,即它背后的用户仍然存在-这是一个便宜的设备通话,因此它不会通过网络告诉您用户id是否仍然有效。