JWT基于角色的访问控制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JWT基于角色的访问控制相关的知识,希望对你有一定的参考价值。

假设我想使用JWT进行身份验证,对于直接使用我的应用程序API的用户,我想发出一个不会过期的令牌(但确实包含一个ID,以便可以撤销它)。其次,假设我有一个基于角色的访问系统,我还希望将用户的角色编码到令牌中。但是,如何解决用户角色可能会发生变化但令牌仍会对其进行编码的问题?显然,如果某人的角色改为某些具有较少特权的东西,这将是一个安全问题?问题不仅仅局限于这个用例,理论上有效的令牌会产生相同的角色变化问题而不会立即产生影响。

我的初始解决方案也没有将角色/权限级别编码到主令牌中,而是使用辅助令牌,只有在从更大的互联网通过应用程序的边界时才会添加到我的系统请求,但我也想知道如何其他人解决了这个问题?

答案

如果您需要使令牌无效,您必须跟踪您发出的令牌,并确保您可以在某个时间点“删除”它们。

我的建议是使用一个标记,并在某处跟踪USERTOKEN_VALID_IF_ISSUED_AFTER之间的关系。

此时,当用户注销时,当他们的权限更改时,他们更改密码时......您可以使用$USER_IDNOW()在此表中插入记录。

下次令牌通过您的API时,您验证它是在TOKEN_VALID_IF_ISSUED_AFTER之后通过iat声明发出的 - 如果没有,用户将必须获得一个全新的令牌。

以上是关于JWT基于角色的访问控制的主要内容,如果未能解决你的问题,请参考以下文章

客户端 JWT 基于角色的授权

将 JWT 与基于角色的授权一起使用

.NET Core 3.1 基于角色的 JWT 授权返回 403 禁止

Istio 安全设置笔记

Yii Framework 2.0 基于角色的访问控制 RBAC

基于角色与基于资源的权限访问控制