我已经在 ASP.NET Core中实现了JWT身份验证和基于策略的授权。具有管理员权限的特定用户可以向非管理员用户分配权限。如果管理员更新非管理员用户的权限/声明,是否有办法强制使访问令牌过期,以便携带它的用户将被迫使用新更新的权限/声明请求新的访问令牌?现在,唯一的方法是等待令牌过期,但我想立即强制过期。
基于 JWT 令牌的身份验证在服务器端是无状态的。因此,当令牌未过期时,它将起作用。有一些方法可以解决这个问题:
- 不包括令牌声明中的角色和权限,并在每个请求中从数据库中获取这些值。 使用刷新令牌
- 机制并将刷新时间设置为几分钟,并在刷新时间过期时返回新令牌。因此,对于刷新时间已过期的令牌,您知道要获得新的访问权限(不是在每个请求中(。新权限将在几分钟内设置,但经过身份验证的用户无需再次登录。
- 创建一组黑名单令牌,并将上次颁发的令牌附加到该令牌(不推荐(。