我正在使用资源所有者密码凭据流来根据我提供的API对我的iOS应用进行身份验证。这工作正常,我获得访问令牌,并在它们到期时刷新令牌。
但是,如果用户在多个客户端上安装该应用,例如iPhone和iPad使用相同的用户名和密码进行身份验证,他们都获得相同的访问令牌。首先刷新访问令牌的客户端使用新的访问令牌可以正常工作,但另一个客户端不再像使用以前的访问令牌那样工作。
显而易见的解决方案是允许用户(资源所有者)拥有多个访问令牌,并在每次身份验证时返回新的访问令牌。这就产生了如何清理旧的访问令牌的问题?
或者有更好的方法在多个客户端上验证同一用户吗?
答案 0 :(得分:1)
处理令牌有几种策略,我建议使用自包含令牌。据我所知,大多数大型OAuth2提供商都使用此解决方案。自包含令牌使用一些安全数据打包所有重要的令牌信息,例如, JSON Web Tokens signature或encryption。自包含令牌不需要存储在数据库中,随着时间的推移而过期,但仍可以安全地进行验证。但是,如果没有数据库,撤销此类令牌并非易事。
使用自包含令牌,您的每个客户都可能拥有自己的访问令牌,而您无需费心清理数据库中的旧令牌。