KeycloakBuilder配置serverUrl遇HTTP 404,求正确取值
KeycloakBuilder 正确的 serverUrl 设置方法
你的代码出现404错误的核心原因是serverUrl设置错误,Keycloak Java客户端的serverUrl不需要指定具体的OIDC端点路径(比如/auth或/token),只需填写Keycloak服务器的根地址即可,客户端会自动根据配置拼接对应的端点。
正确的 serverUrl 设置
将serverUrl修改为Keycloak服务器的基础地址:
Keycloak keycloak = KeycloakBuilder.builder() .serverUrl("http://localhost:8080") // 仅需根地址,无需后续端点路径 .realm("API") .username("xxxxxxxx") .password("xxxxxxxx") .grantType("password") .clientId("APIUSERS") .clientSecret("xxxxxxxxxxxxxxxx") .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(20).build()) .build(); AccessTokenResponse tokenResponse = keycloak.tokenManager().getAccessToken(); System.out.println("Access Token: " + tokenResponse.getToken());
原因说明
Keycloak Java客户端会基于你配置的serverUrl、realm和授权类型,自动拼接正确的令牌请求路径:
- 当使用
password授权类型时,客户端会生成路径:http://localhost:8080/realms/API/protocol/openid-connect/token - 这个路径和你curl命令中成功调用的路径完全一致,因此能正常获取令牌。
之前你设置的/realms/API/protocol/openid-connect/auth是授权端点(用于交互式登录),并非密码模式的令牌端点,因此会返回404错误。
内容的提问来源于stack exchange,提问作者Sharmi467
相关产品推荐
相关产品推荐

