KeyCloak resource_access 包含多个资源

KeyCloak resource_ access containing multiple resources

我目前正在研究 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 声明是否是一个好习惯。

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

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