Keycloak :REST API 调用通过管理员用户名和密码获取用户的访问令牌

Posted

技术标签:

【中文标题】Keycloak :REST API 调用通过管理员用户名和密码获取用户的访问令牌【英文标题】:Keycloak :REST API call to get access token of a user through admin username and password 【发布时间】:2020-10-22 07:02:46 【问题描述】:

我有一个要求,我需要获取用户的访问令牌。

我知道管理员用户名和密码,因此可以获得管理员的访问令牌。

是否有任何其他 API 可以为使用上述数据的用户提供访问令牌?

【问题讨论】:

【参考方案1】:

有两种获取访问令牌的方法。一个带有 Rest 客户端(keycloak Rest API),另一个通过 java keycloak-admin-client 库。

1. Keycloak Rest API:

URI: http://keycloak:8080/auth/realms/myrealm/protocol/openid-connect/token
Type: POST
Content-Type: application/x-www-form-urlencoded
grant_type:password
username:user
password:user_password
client_id:client_id
secret_id:client_secret

2. Keycloak admin client (JAVA)

Keycloak instance = Keycloak.getInstance("http://keycloak:8080/auth", "myrealm", "user", "user_password","client_id", "client_secret");                                                                                                      
TokenManager tokenmanager = instance.tokenManager();
String accessToken = tokenmanager.getAccessTokenString();

【讨论】:

我们可以不使用用户密码,因为我们有管理员凭据吗?

以上是关于Keycloak :REST API 调用通过管理员用户名和密码获取用户的访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 keycloak REST API 方法 *404*

与 Keycloak 身份验证插件集成时,无法从 rest 客户端调用 nuxeo rest api

keycloak 基于 JavaScript 的策略可以调用远程 REST API 吗?

通过API注册后Keycloak自动登录

使用 cUrl 通过其 REST API 配置 Keycloak

哪些角色允许 Keycloak 领域中的用户使用 Admin-REST-API?