【问题标题】:Keycloak spring - incorrect URIKeycloak spring - 不正确的 URI
【发布时间】: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


    【解决方案1】:

    您可以尝试在 KeyCloak 配置中指定:http://localhost:3002/* 而不是您的实际重定向 URI,但从我在您的设置中读取的内容来看,一切看起来都不错。

    有时也要小心,如果您要更改 Keyloak 的配置,则需要重新启动它以将更改考虑在内。

    如果您还想测试一个完整的场景,请使用您的浏览器打开一个隐身标签,它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2019-12-10
      • 2017-12-03
      • 1970-01-01
      • 2013-06-11
      • 2018-12-09
      • 2013-09-14
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多