2

我正在使用资源所有者密码凭据流根据我提供的 API 对我的 iOS 应用程序进行身份验证。这工作正常,我得到了访问令牌,并且可以在令牌过期时刷新令牌。

但是,如果用户在多个客户端(例如 iPhone 和 iPad)上安装应用程序并使用相同的用户名和密码进行身份验证,则它们都将获得相同的访问令牌。首先刷新访问令牌的客户端使用新的访问令牌工作正常,但另一个客户端不再工作,因为它使用以前的访问令牌。

显而易见的解决方案是允许用户(资源所有者)拥有多个访问令牌,并在每次进行身份验证时返回一个新的访问令牌。这就提出了我应该如何清理旧的访问令牌的问题?

或者有没有更好的方法在多个客户端上验证同一个用户?

4

1 回答 1

1

有几种处理令牌的策略,我建议使用自包含令牌。据我所知,大多数大型 OAuth2 提供商都使用此解决方案。自包含令牌将所有重要的令牌信息与一些安全数据打包在一起,例如,请参阅带有签名加密的JSON Web 令牌。自包含令牌不需要存储在数据库中,随着时间的推移过期,但仍然可以安全地验证。但是,如果没有数据库,撤销此类令牌并非易事。

使用自包含令牌,您的每个客户端都可能拥有自己的访问令牌,您不必费心清理数据库中的旧令牌。

于 2013-07-08T16:01:35.877 回答