用户权限更改后 JWT 刷新

Posted

技术标签:

【中文标题】用户权限更改后 JWT 刷新【英文标题】:JWT Refresh after user permissions have changed 【发布时间】:2016-11-09 21:38:35 【问题描述】:

关于 json 网络令牌的快速问题。

当我的令牌过期时,我会根据我当前的令牌获得一个刷新令牌(不验证当前用户)。

那么当我更改用户的权限,并且他不再被允许从 web api 获取数据时会发生什么? 我应该将 jwt 存储在数据库中以便我可以验证他的权限还是什么?

我读到一个令牌被分成 3 个部分,其中包含一些用户信息。如果刷新令牌携带相同的信息,它怎么会有所不同?

我真的希望有人能帮我解决这个问题。

格兹, 罗宾

【问题讨论】:

【参考方案1】:

那么当我更改用户的权限,并且他不再被允许从 web api 获取数据时会发生什么?

您应该使令牌无效

我应该将 jwt 存储在数据库中以便我可以验证他的权限还是什么?

这不是一个简单的问题,有多种选择。见Invalidating client side JWT session

1) 移除客户端令牌

2) 令牌黑名单:存储在注销和过期时间之间的令牌,标记过期并在每个请求中检查它。需要服务器存储

3) 使用其密码或权限摘要的哈希值对令牌进行签名。如果签名字段发生更改,任何以前的令牌都会自动验证失败。将此机制扩展到其他感兴趣的领域以进行签名。缺点是需要访问数据库

如果刷新令牌携带相同的信息,它怎么会有所不同?

第一部分是令牌的标头(签名算法),第二部分是有效载荷(主题、名称、颁发者、颁发时间、到期等),第三部分是签名,它在标头和有效载荷。由于“发布时间”等数据会有所不同,因此签名字段会发生变化

【讨论】:

以上是关于用户权限更改后 JWT 刷新的主要内容,如果未能解决你的问题,请参考以下文章

在每个API调用之前验证JWT令牌

在永久存储中跟踪 JWT

具有用户权限的基于 JWT 令牌的授权 Asp.net core 2.0

JWT的权限控制与Shiro入门

系统时间更改后 JWT 刷新

使用 JWT (Node.js + mongoose) 在 REST API 中管理用户权限的最佳方法