我正在使用keycloak作为授权服务器。用户将自己的用户名/密码发送到MyWebApp
,MyWebApp
与grant_type: password
一起获得令牌,然后将令牌响应给用户。现在,我希望用户能够获取其信息,更改其密码以及与自己有关的所有信息 RESTful 。当我向/{realm}/users/{id}
发送休息请求以获取用户信息时,密钥斗篷获得403错误响应。在没有来自keyclaok的管理员访问权限的情况下,如何获取用户信息?
注意:我见过this question,但是我也想给用户编辑个人资料。
答案 0 :(得分:1)
我认为您正在将Oauth与Grant type = password一起使用。如果您提到的令牌是由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
答案 1 :(得分:0)
据我所知,在新版本的Keycloak中,帐户应用程序(~/auth/realms/{realm}/account
)将作为REST后端实现,因此您的用户将能够以RESTful方式使用其个人资料数据(签出keycloak {{ 3}})。
如果您迫不及待想要使用此功能,可以为用户配置文件操作实现自己的REST后端。这意味着您必须实现 REST终结点服务提供程序,并将您自定义的Keycloak角色集集成到该API(您也可以在不检查任何角色的情况下实现终结点,因此仅需要承载身份验证)。选中blog,您还可以使用Keycloak源代码,尤其是org.keycloak.services.resources.admin
包作为实现示例。
PS。要查看用户信息,请考虑使用用户信息OIDC端点(请参见 Hlex 答案)。也可以通过OIDC映射器(“客户端-> {client ID”->“映射器”标签)自定义