JWT基于角色的访问控制

问题描述 投票:0回答:1

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

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

security authentication jwt rbac
1个回答
2
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.