将 JWT 受众字段用于授权角色

eme*_*hie 5 security authorization jwt

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

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

JWT 草案规范中的相关部分:

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

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

谢谢

Víť*_*.cz 2

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

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

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

  "name": "John Doe",
  "roles": ["USER", "EDITOR"]
}
Run Code Online (Sandbox Code Playgroud)

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

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