在 Keycloak 中从外部源映射客户端角色

时间:2021-01-14 17:14:32

标签: mapping keycloak roles

我在 keycloak 中成功实现了 User storage SPI。现在我可以从外部 REST 源进行身份验证。现在我想从外部来源获取客户端角色。我收到一个用户实体如下:

{
  "id": "78c8ee03-0bf8-422a-91ec-6241624c0683",
  "username": "kaushikam",
  .....
  "roles": [
    {
       "id": 1,
       "name": "heroes"
       "client": "heroes-client"
    }
  ]
}

keycloak 服务器中,我手动创建了一个名为 heroes-client 的客户端,并在该客户端中添加了客户端角色 heroes。现在,我想将从外部源接收的客户端角色映射到名为 heroes-client 的客户端中的客户端角色。

我在 getClientRoleMappings 中使用了 UserModel,如下所示:

override fun getClientRoleMappings(app: ClientModel?): MutableSet<RoleModel> {
        logger.info { "Calling getClientRoleMappings" }
        val userRoles = this.user?.roles?.filter { it.client == app?.name } ?: emptyList()
        val clientRoles = mutableSetOf<RoleModel>()
        userRoles.forEach {
            if (app != null) {
                clientRoles.add(app.getRole(it.name))
            }
        }
        return clientRoles
    }

但是上面的代码没有被调用。虽然 getRoleMappings 被调用。有没有办法解决这个问题。

你可以得到我工作的全部源代码here

0 个答案:

没有答案