可以使用 JWT 的子字段来授予 API 资源的权限吗?
Posted
技术标签:
【中文标题】可以使用 JWT 的子字段来授予 API 资源的权限吗?【英文标题】:Can sub field from JWT be used to grant permission to API resource? 【发布时间】:2020-11-16 06:31:12 【问题描述】:过去几天我读了很多关于 OAuth2 的文章,我了解使用范围以用户的名义委托访问。我的问题是,如果我有用户 sub: A
和 sub: B
和 /resource/X
,只有 用户 A 应该有权访问 /resource/X,我应该使用scope "read:X"
组合 与 sub
字段以确定用户是否可以访问该资源,或者 只有 具有值 A 的子字段就足够了吗?
我正在学习如何使用 Auth0 API,2018 年发布的一个问题没有答案,这正是我的疑惑: Comment about the sub field from tokens
【问题讨论】:
【参考方案1】:在简单的 API 中,通常单独使用范围来确定对资源的访问。读取和写入范围很常见,代表其他高级权限的范围也是如此。不过,这种扩展的能力是有限度的。
在更复杂的业务应用程序中,您通常需要从令牌中识别用户(通过 sub 声明),以便您随后可以提供与该特定用户的历史相关联的资源。
这通常涉及将 sub 声明从访问令牌映射到您的 API 自己的数据,如下面的帖子所示:
User Data Management API Authorization【讨论】:
以上是关于可以使用 JWT 的子字段来授予 API 资源的权限吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何测试使用 JWT 身份验证的节点 API(使用用户登录获取令牌)
使用 Java Spring Rest Api 执行授权码授予流程