Ich versuche, eine OAuth2RestTemplate zu verwenden, um ein selbst signiertes Zertifikat für den Zugriff auf Token über HTTPS abgerufen werden, aber ich bin immer noch diesen Fehler:CertificateException: passende Kein Name localhost mit OAuth2RestTemplate NICHT RestTemplate gefunden
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching localhost found
Dies ist meine Unit-Test, der den Fehler zu werfen:
public class OAuth2ClientTest {
private static final Logger logger = LoggerFactory
.getLogger(SecurityConfig.class);
@Value("${oauth.resource:https://localhost:8443}")
private String baseUrl;
@Value("${oauth.token:https://localhost:8443/oauth/token}")
private String tokenUrl;
@Value("${oauth.resource.id:microservice-test}")
private String resourceId;
@Value("${oauth.resource.client.id:client1}")
private String resourceClientId;
@Value("${oauth.resource.client.secret:changit}")
private String resourceClientSecret;
@Test
public void execute_post_to_tokenUrl()
throws ClientProtocolException, IOException {
OAuth2RestTemplate template = template();
ResponseEntity<String> response = template.exchange(
tokenUrl,
HttpMethod.POST,
null,
String.class);
assertThat(response.getStatusCode().value(), equalTo(200));
}
private OAuth2RestTemplate template(){
ResourceOwnerPasswordResourceDetails resource = new ResourceOwnerPasswordResourceDetails();
resource.setAccessTokenUri(tokenUrl);
resource.setId(resourceId);
resource.setClientId(resourceClientId);
resource.setClientSecret(resourceClientSecret);
resource.setGrantType("password");
resource.setScope(Arrays.asList("openid"));
resource.setUsername("[email protected]");
resource.setPassword("user1");
OAuth2RestTemplate template = new OAuth2RestTemplate(resource);
ClientHttpRequestFactory factory = template.getRequestFactory();
template.setRequestFactory(requestFactory());
return template;
}
private HttpComponentsClientHttpRequestFactory requestFactory(){
CloseableHttpClient httpClient
= HttpClients.custom()
.setSSLHostnameVerifier(new NoopHostnameVerifier())
.build();
HttpComponentsClientHttpRequestFactory requestFactory
= new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
return requestFactory;
}
}
Wenn ich nicht-HTTPS-Verbindung verwenden, funktioniert der OAuth2 Code in Ordnung. Nur nicht mit HTTPS