Запросить HTTPS-ресурс с помощью OAuth2RestTemplate - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь получить некоторые данные из API, защищенного с помощью SSL. Я настроил OAUth2RestTemplate с необходимой конфигурацией, но получаю следующее исключение

Caused by: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://.../oauth/token": sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Это мой конфиг RestTemplate:

@EnableOAuth2Client
@Configuration
public class RestTemplateConfig {

    private final MyConfig config;

    public RestTemplateConfig(MyConfig config) {
        this.config = config;
    }

    @Bean
    protected OAuth2ProtectedResourceDetails resource() {

        ResourceOwnerPasswordResourceDetails resource = new ResourceOwnerPasswordResourceDetails();

        List scopes = new ArrayList<String>();
        scopes.add("read");
        resource.setAccessTokenUri(nikolaConfig.getBaseUrl() + "/oauth/token");
        resource.setClientId("...");
        resource.setClientSecret("...");
        resource.setGrantType("...");
        resource.setScope(scopes);

        resource.setUsername(config.getLogin());
        resource.setPassword(config.getPassword());

        return resource;
    }

    @Bean
    public OAuth2RestOperations restTemplate() {
        AccessTokenRequest atr = new DefaultAccessTokenRequest();

        return new OAuth2RestTemplate(resource(), new DefaultOAuth2ClientContext(atr));
    }
}

И мой звонок:

String test = restTemplate.getForObject(URI.create(config.getBaseUrl() + "/configuration/all"), String.class);

Может кто-нибудь объяснить, как настроить resttemplate так, чтобы он работал с Https?

РЕДАКТИРОВАТЬ: я пытался добавить keystore.p12, содержащий сертификат сайта, в приложение, но это ничего не изменило:

server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=xxx
server.ssl.key-password=xxx
server.ssl.trust-store=classpath:keystore.p12
server.ssl.trust-store-password=xxx
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...