1

目前我有多个 Keycloak 用户。在我的前端,一个用户应该能够从 keycloak 接收所有用户以进行进一步处理。

这就是我想出使用这个端点的原因:KEYCLOAK_URL/auth/admin/realms/REALM/users

这给了我以下输出:

[
    {
        "id": "ebe12164-9097-49c0-a1dd-809dbc63b6bf",
        "createdTimestamp": 1604691601645,
        "username": "test@test.de",
        "enabled": true,
        "totp": false,
        "emailVerified": false,
        "firstName": "test",
        "lastName": "test",
        "email": "test@test.de",
        "disableableCredentialTypes": [],
        "requiredActions": [],
        "notBefore": 0,
        "access": {
            "manageGroupMembership": false,
            "view": true,
            "mapRoles": false,
            "impersonate": false,
            "manage": false
        }
    },
    ...
]

问题:有没有办法限制keycloak返回用户的哪些字段?例如只有“id”和“用户名”,而不是其他可能更敏感的东西,比如“访问”部分?

4

1 回答 1

1

要获取端点返回的内容,KEYCLOAK_URL/auth/admin/realms/REALM/users您需要知道类似管理员的用户(具有适当的角色)的凭据,然后使用这些凭据代表该用户获取令牌,最终使用该令牌来获取信息从端点KEYCLOAK_URL/auth/admin/realms/REALM/users

所有这一切都表明,从类似管理员的用户的角度来看,信息是不敏感的,例如,没有共享用户凭据。因此,尝试过滤掉该端点发送的内容是没有意义的,因为该端点是由类似管理员的用户使用的,他们无论如何都可以在管理控制台上访问所有这些信息。

在我的前端,一个用户应该能够从 keycloak 接收所有用户以进行进一步处理。

即使您为该用户分配角色“查看用户”以便该用户可以获取其他用户的信息,它仍然会附带您显示的所有信息。

假设您有一个后端,我会说更简单的解决方案是创建一个自定义端点,该端点返回您的用户列表。

于 2020-11-18T16:03:14.330 回答