KeyCloak 资源_访问包含多个资源

时间:2021-07-23 09:47:12

标签: security oauth keycloak openid-connect

我目前正在学习 OIDC 和 KeyCloak,但我并没有真正了解访问令牌的性质。我创建了两个客户端(authz-test 和 app_authz_2)并为访问资源的用户分配了不同的角色,然后我在 app_authz_2 上进行了身份验证和请求授权,但我可以看到 resource_access 声明还包括 authz-test 的角色。

 "resource_access": {
   "authz-test": {
     "roles": [
       "watcher_role"
     ]
   },
   "app_2_authz": {
     "roles": [
       "app_2_role"
     ]
   },
   "account": {
     "roles": [
       "manage-account",
       "manage-account-links",
       "view-profile"
     ]
   }
 },

这个 resource_access 声明就是我所说的。我担心访问令牌最终会因资源访问声明而膨胀,所以我在问是否可能,以及不包含不同资源服务器的 resource_access 声明是否是一个好习惯。

1 个答案:

答案 0 :(得分:0)

通过开箱即用的安装,新创建的客户端会被分配一个名为 roles 的默认客户端范围。如果您查看该客户端范围,您将看到一个名为 client roles 的映射器,类型为 User Client Role。 由于此映射器未配置特定客户端,因此默认情况下,所有客户端的所有客户端角色都将编码到令牌中。

您可能需要考虑从您的客户端取消分配默认的 roles 客户端范围,并为您的客户端分配一个 User Client Role 类型的映射器,而不是只映射该特定客户端的客户端角色。