【问题标题】:How to get Keycloak user information via REST without admin role如何在没有管理员角色的情况下通过 REST 获取 Keycloak 用户信息
【发布时间】:2020-02-22 13:34:52
【问题描述】:

我使用keycloak 作为授权服务器。用户将自己的用户名/密码发送给MyWebAppMyWebAppgrant_type: password 获取令牌,然后将令牌响应给用户。现在我希望我的用户能够获取他们的信息、更改他们的密码以及与他们自己相关的一切RESTFUL。当我向/{realm}/users/{id} 发送休息请求以获取用户信息时,keycloak 得到 403 错误响应。如何在没有管理员权限的情况下从 keyclaok 获取用户信息?

注意:我见过this question,但我也想给用户编辑配置文件。

【问题讨论】:

    标签: keycloak keycloak-services


    【解决方案1】:

    据我所知,在新版本的 Keycloak 中,帐户应用程序 (~/auth/realms/{realm}/account) 将作为 REST 后端实现,因此您的用户将能够以 RESTful 方式处理他们的个人资料数据(查看 keycloak blog) .

    如果您等不及要使用此类功能,您可以为用户配置文件操作实现自己的 REST 后端。这意味着您必须实现 REST 端点服务提供者,并将您的自定义 Keycloak 角色集集成到该 API(您也可以在不检查任何角色的情况下实现端点,因此只需要承载身份验证)。检查Keycloak development docs,你也可以使用Keycloak源,尤其是org.keycloak.services.resources.admin包作为实现示例。

    PS。要查看用户信息,请考虑使用用户信息 OIDC 端点(请参阅 Hlex 答案)。它也可以通过 OIDC 映射器进行定制(客户端 -> {client Id} -> 映射器选项卡)

    【讨论】:

      【解决方案2】:

      我认为您正在使用带有 Grant type=password 的 Oauth。如果您提到的令牌是由 Keycloak 生成的。您可以使用 /userinfo 端点向 Keycloak 请求用户信息。

      这是端点示例:

      http://localhost:8080/auth/realms/demo/protocol/openid-connect/userinfo

      这是如何发送参数: https://connect2id.com/products/server/docs/api/userinfo

      GET /userinfo HTTP/1.1

      主机:c2id.com

      授权:承载 Gp7b5hiURKpWzEXgMJP38EnYimgxlBC1PpS2zGXUqe

      【讨论】:

        猜你喜欢
        • 2018-03-10
        • 2021-11-01
        • 2023-03-24
        • 1970-01-01
        • 2013-11-19
        • 1970-01-01
        • 1970-01-01
        • 2015-07-07
        • 1970-01-01
        相关资源
        最近更新 更多