如何在没有管理员角色的情况下通过REST获取Keycloft用户信息



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

注意:我已经看到了这个问题,但我也想给用户编辑配置文件。

我认为您使用的是Grant type=password的Oauth。如果您提到的令牌是由Keycloft生成的。您可以使用/userinfo端点向Key斗篷请求用户信息。

这是端点的例子:

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

以下是发送参数的方法:https://connect2id.com/products/server/docs/api/userinfo

获取/userinfo HTTP/1.1

主机:c2id.com

授权:Bearer Gp7b5hiURKpWzEXgMJP38EnYimgxlBC1PpS2zGXUqe

据我所知,在新版本的Key斗篷中,Account应用程序(~/auth/realms/{realm}/account(将作为REST后端实现,这样您的用户将能够以RESTful的方式处理他们的配置文件数据(查看key斗篷博客(。

如果您不能等待太久,那么您可以为用户配置文件操作实现自己的REST后端。这意味着您必须实现REST端点服务提供程序,并将您的自定义密钥斗篷角色集集成到该API(您还可能在不检查任何角色的情况下实现端点,因此只需要承载身份验证(。查看Keycloft开发文档,也可以使用Keycloft源代码,尤其是org.keycloak.services.resources.admin包作为实现示例。

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

最新更新