【问题标题】:keycloak impossible to get client-roles inside access_tokenkeycloak 无法在 access_token 中获取客户端角色
【发布时间】:2021-03-30 13:40:34
【问题描述】:

我是 keycloak 的新手,按照互联网上的教程,我配置了一个新的领域“示例”,其中包含客户端“app-backend”、相关角色“admin”(未组合)和领域角色“app- admin”(由客户端角色“admin”组成)。

我还创建了一个用户,并分配了领域角色“管理员”。 此时一切正常,但是,当我通过对 keycloak 服务器(http://localhost:8080/auth/realms/barber-reservation/protocol/openid-connect/token)的 POST API 调用请求访问令牌时,我已经注意到客户端角色不包含在“resource_access”对象中,相反我在其中找到了“account”对象。

这种奇怪的行为使我的 Spring Boot 应用程序的所有授权验证都失败。

在收到访问令牌之后:

{
  "exp": 1608478284,
  "iat": 1608477984,
  "jti": "5ce17d4d-e3b3-4207-8010-45c0895a9a6a",
  "iss": "http://localhost:8080/auth/exmple/app-backend",
  "aud": [
    "app-backend"
  ],
  "sub": "d3fcc7df-878e-4363-91d6-f06437de5f90",
  "typ": "Bearer",
  "azp": "app-frontend",
  "session_state": "dad4ab85-850a-4c63-8a26-7b3b6de9f821",
  "acr": "1",
  "allowed-origins": [
    "*"
  ],
  "realm_access": {
    "roles": [
      "app-admin"
    ]
  },
    "resource_access": {
    "account": {
      "roles": [
        "manage-account",
        "manage-account-links",
        "view-profile"
      ]
    },
    "app-backend": {
      "roles": [
        "admin"
      ]
    }
  },
  "scope": "openid email profile",
  "email_verified": true,
  "name": "Name Surname",
  "preferred_username": "user@email.com",
  "locale": "it",
  "given_name": "Name",
  "family_name": "Surname",
  "email": "user@email.com"
}

我期待客户端角色部分包含在“resource_access”对象中,如下所示:

"resource_access": {
   "app-backend": {
      "roles": [
        "admin"
      ]
    }
}

关于如何纠正这种奇怪行为的任何想法? 谢谢。

【问题讨论】:

    标签: realm keycloak access-token roles


    【解决方案1】:

    这里没有什么奇怪的,来自客户端“app-backend”的客户端角色 admin 位于 resource_access 对象上:

    "resource_access": 
      {
        "account": {
          "roles": [
            "manage-account",
            "manage-account-links",
            "view-profile"
          ]
        },
        "app-backend": {
          "roles": [
            "admin"
          ]
        }
      },
    

    resource_access 是键值列表,客户及其角色。

    【讨论】:

      猜你喜欢
      • 2021-09-06
      • 2021-01-09
      • 2021-11-01
      • 2022-06-15
      • 2021-10-27
      • 1970-01-01
      • 2020-01-19
      • 2017-09-12
      • 2022-10-17
      相关资源
      最近更新 更多