【问题标题】:KeyCloak resource_ access containing multiple resourcesKeyCloak resource_access 包含多个资源
【发布时间】:2021-09-30 11:14:55
【问题描述】:

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

【问题讨论】:

  • 我猜使用的 OIDC 客户端启用了Full Scope Allowed,所以你可以看到所有资源。

标签: security oauth keycloak openid-connect


【解决方案1】:

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

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

【讨论】:

  • 非常感谢,这完全解决了我的问题。删除所有客户端访问角色是否是一种好习惯?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-21
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 2021-01-06
相关资源
最近更新 更多