我们的申请中有要求: 当用户更改其密码时,应重新验证所有其他登录(来自其他设备或计算机)(当前用户的会话除外)。
我在下面阅读(下面提供的链接并引用了相关的段落)并得到了一个想法:撤销用户的所有令牌。
但不确定如何实现这一点(撤销所有令牌)。我们正在使用Jersey和OAuth2。
撤消令牌是否意味着从会话和cookie中删除现有的访问令牌/刷新令牌。然后换上新的令牌?
由于
[使用JAX-RS和Jersey进行基于REST令牌的身份验证的最佳实践] Best practice for REST token-based authentication with JAX-RS and Jersey
使用JWT处理令牌撤销
如果要撤消令牌,则必须跟踪它们。您 不需要将整个令牌存储在服务器端,只存储 令牌标识符(必须是唯一的)和一些元数据(如果需要)。 对于令牌标识符,您可以使用UUID。
jti声明应该用于存储令牌标识符 令牌。验证令牌时,请确保它尚未被撤销 通过检查令牌标识符的jti声明的值 你有服务器端。
出于安全考虑,请撤消用户的所有令牌 更改密码。
答案 0 :(得分:1)
一般情况下(不仅使用Jersey),您必须在更改密码时使为用户生成的所有令牌无效。
但不确定如何实现(撤销所有令牌)
这意味着您的oauth-server数据库中为该用户必须expire
每个已发布的令牌:
撤消令牌是否意味着从会话和cookie中删除现有的访问令牌/刷新令牌。然后换上新的令牌?
排序,撤销意味着:
然后换上新的令牌?
在大多数情况下,在此之后,当用户想要访问受保护资源时,您的安全过滤器/图层必须:
access_denied
错误(如果是服务,API)