Oauth 2.0 如何使用OAuth2在多个客户端上对同一用户进行身份验证?

Oauth 2.0 如何使用OAuth2在多个客户端上对同一用户进行身份验证?,oauth-2.0,Oauth 2.0,我正在使用资源所有者密码凭据流根据我提供的API验证我的iOS应用程序。这很好,我得到了访问令牌,可以在令牌过期时刷新令牌 但是,如果用户在多个客户端(如iPhone和iPad)上安装应用程序,并使用相同的用户名和密码进行身份验证,则他们都会获得相同的访问令牌。第一个刷新访问令牌的客户端使用新的访问令牌可以正常工作,但另一个客户端不再使用以前的访问令牌 显而易见的解决方案是允许用户(资源所有者)拥有多个访问令牌,并在每次进行身份验证时返回一个新的访问令牌。这就提出了如何清理旧访问令牌的问题 还是

我正在使用资源所有者密码凭据流根据我提供的API验证我的iOS应用程序。这很好,我得到了访问令牌,可以在令牌过期时刷新令牌

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

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


还是有更好的方法在多个客户端上验证同一用户?

有几种策略可以处理令牌,我建议使用自包含令牌。据我所知,大多数大型OAuth2提供商都使用此解决方案。自包含令牌将所有重要令牌信息与一些安全数据打包在一起,请参见,例如,使用或。自包含令牌不需要存储在数据库中,随着时间的推移会过期,但仍然可以安全地进行验证。然而,在没有数据库的情况下撤销这样的令牌并不是件小事

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