【发布时间】:2022-08-24 17:21:00
【问题描述】:
我使用以下配置实现了一个 KeyCloak 客户端: keycloak configuration
我像这样实现了我的回调端点:
@GetMapping(\"/callback\")
@ResponseBody
public String getToken(@RequestParam String code) {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.add(\"Content-Type\", MediaType.APPLICATION_FORM_URLENCODED.toString());
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add(\"code\", code);
map.add(\"client_id\", \"spring-login-app\");
map.add(\"client_secret\", \"\");
map.add(\"grant_type\", \"authorization_code\");
map.add(\"redirect_uri\", UriComponentsBuilder.fromHttpUrl(\"http://127.0.0.1:3002/callback\").build().toString());
HttpEntity formEntity = new HttpEntity<MultiValueMap<String, String>>(map, headers);
try {
ResponseEntity<KeycloakTokenResponse> response =
restTemplate.exchange(\"http://127.0.0.1:8080/auth/realms/raroc/protocol/openid-connect/token\",
HttpMethod.POST,
formEntity,
KeycloakTokenResponse.class);
KeycloakTokenResponse resp = response.getBody();
return resp.getAccess_token();
} catch (Exception e) {
System.out.println(e.getMessage());
}
return \"nothing\";
}
问题是当我试图从这个回调端点获取我的访问令牌时,我收到了 400 Bad Request 错误,并显示以下消息:400 错误请求:\"{\"error\":\"invalid_grant\",\"error_description\":\"Incorrect redirect_uri\"}\"
当我通过邮递员使用相同的 x-www-form-url-encoded 表单参数对其进行测试时,它工作正常,但在春天,这是不可能的。
我为“redirect_uri”参数尝试了许多场景,只是一个字符串、一个 UriComponentsBuilder.formHttpUrl、其他一些 URL 编码器,但不幸的是我仍然有这个错误。
标签: java spring oauth keycloak redirect-uri