我需要一个Java Keycloak(2.3)连接来返回令牌,但是我早就遇到了问题。当在Postman中请求我的Keycloak实例时,我在特定控制台中遇到以下错误。
This是我的代码基于Keycloak的示例。
Keycloak:
17:54:47,586 WARN [org.keycloak.events] (default task-25) type=LOGIN_ERROR, realmId=master, clientId=admin-cli, userId=null, ipAddress=127.0.0.1, error=invalid_client_credentials, grant_type=password
Wildfly:
17:55:14,310 ERROR [stderr] (default task-48) javax.ws.rs.BadRequestException: HTTP 400 Bad Request
爪哇:
Keycloak keycloak = Keycloak.getInstance(
KEYCLOAK_TOKEN_RESOURCE_URI,
REALM,
KEYCLOAK_USERNAME,
KEYCLOAK_PASSWORD,
KEYCLOAK_CLIENT);
RealmRepresentation realm = keycloak.realm(REALM).toRepresentation();
答案 0 :(得分:0)
Keycloak keycloak = KeycloakBuilder.builder().serverUrl(KEYCLOAK_TOKEN_RESOURCE_URI).realm(REALM)
.username(KEYCLOAK_USERNAME).password(KEYCLOAK_PASSWORD).clientId(KEYCLOAK_CLIENT)
.clientSecret("input-here-your-client-secret").build();
也许这应该有效,因为Keycloak 2.3.Final在Keycloak.getInstance(...)方法上有一个Bug。
答案 1 :(得分:0)
我能够通过将我的java代码更改为以下
来解决此问题Keycloak keycloak = KeycloakBuilder.builder()
.serverUrl(KEYCLOAK_TOKEN_RESOURCE_URI)
.realm(REALM)
.username(KEYCLOAK_USERNAME)
.password(KEYCLOAK_PASSWORD)
.clientId(KEYCLOAK_CLIENT)
.clientSecret(CLIENT_SECRET)
.build();