使用 JWT 受众字段作为授权角色

Posted

技术标签:

【中文标题】使用 JWT 受众字段作为授权角色【英文标题】:Using JWT audience field for authorization roles 【发布时间】:2015-01-06 09:47:52 【问题描述】:

我正在考虑使用 JWT 受众字段在我的应用中实现基于角色的授权。

所以我需要 ServiceA 需要“RoleA”受众,ServiceB 需要“RoleB”等。然后当我发布 JWT 时,我会包含适当的受众。

来自 JWT 草案spec 的相关部分:

aud(受众)声明标识了 JWT 的目标接收者。打算处理 JWT 的每个主体都必须使用受众声明中的值来标识自己。如果处理该声明的主体在此声明存在时未将其自身标识为 aud 声明中的值,则必须拒绝 JWT...受众值的解释通常是特定于应用程序的。

看来这可行,但由于我是 JWT 的新手,我想知道:基于角色的授权是否适合受众领域的用例?或者我应该使用带有自定义角色数组等的有效负载来滚动我自己的逻辑?

谢谢

【问题讨论】:

【参考方案1】:

我了解受众,而不是可以授权用户的消费者/应用程序列表。

在我的应用程序中,我将角色放入有效负载中的自己的数组中。比如这样。


 "sub": 1234567890,
 "exp": 9876543210,

  "name": "John Doe",
  "roles": ["USER", "EDITOR"]

在服务器上,我使用 spring security 和从“sub”加载的用户获得授权。

在客户端上,我可以使用这些角色来显示正确的按钮和字段。

【讨论】:

是的,我最终也是这样做的。谢谢

以上是关于使用 JWT 受众字段作为授权角色的主要内容,如果未能解决你的问题,请参考以下文章

基于角色的 jwt 授权

使用 express-jwt 进行基于角色的授权?

如何执行 Auth0 JWT 令牌用户基于角色的授权

ASP.NET Core 使用 JWT 自定义角色/策略授权需要实现的接口

Spring Boot JWT token 基于角色的授权问题

客户端 JWT 基于角色的授权