[SPRING] Spring RestTemplate 및 프록시 인증
SPRINGSpring RestTemplate 및 프록시 인증
나는 Spring과 REST 호출을 시도하고있다. 제가 알기에, 옳은 길은 RestTemplate (?)을 사용하는 것입니다. 문제는, 나는 프록시 뒤에있다.
지금 내 코드는 다음과 같습니다.
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
InetSocketAddress address = new InetSocketAddress(host, 3128);
Proxy proxy = new Proxy(Proxy.Type.HTTP, address);
factory.setProxy(proxy);
RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(factory);
작동하는 것처럼 보이지만 프록시에서 인증해야하지만 어떻게 수행됩니까? 프록시 유형과 SimpleClientHttpRequestFactory 유형은 자격 증명을 처리하지 않는 것 같습니다. 신임장이 없다면, 나는 단지 407을 얻고있다 ...
해결법
-
==============================
1.몇 가지 다른 옵션을 사용하여 다음 코드를 작성했습니다. 작성시 RestTemplate에 대한 프록시를 설정할 수있는 기능이 있으므로 별도의 메소드로 리팩터링 할 수 있습니다. 단지 메모에 추가 종속성이 있으므로 염두에 두십시오.
몇 가지 다른 옵션을 사용하여 다음 코드를 작성했습니다. 작성시 RestTemplate에 대한 프록시를 설정할 수있는 기능이 있으므로 별도의 메소드로 리팩터링 할 수 있습니다. 단지 메모에 추가 종속성이 있으므로 염두에 두십시오.
private RestTemplate createRestTemplate() throws Exception { final String username = "myusername"; final String password = "myPass"; final String proxyUrl = "proxy.nyc.bigtower.com"; final int port = 8080; CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope(proxyUrl, port), new UsernamePasswordCredentials(username, password)); HttpHost myProxy = new HttpHost(proxyUrl, port); HttpClientBuilder clientBuilder = HttpClientBuilder.create(); clientBuilder.setProxy(myProxy).setDefaultCredentialsProvider(credsProvider).disableCookieManagement(); HttpClient httpClient = clientBuilder.build(); HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); factory.setHttpClient(httpClient); return new RestTemplate(factory); }
// 사용 된 종속성.
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.2.5.RELEASE</version> </dependency>
-
==============================
2.아래 코드는 나를 위해 일했습니다.
아래 코드는 나를 위해 일했습니다.
RestTemplate restTemplate = new RestTemplate(); CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope("proxyHost", "proxyPort"), new UsernamePasswordCredentials("proxyUser", "proxyPass") ); HttpClientBuilder clientBuilder = HttpClientBuilder.create(); clientBuilder.useSystemProperties(); clientBuilder.setProxy(new HttpHost("proxyHost", "proxyPort")); clientBuilder.setDefaultCredentialsProvider(credsProvider); clientBuilder.setProxyAuthenticationStrategy(new ProxyAuthenticationStrategy()); CloseableHttpClient client = clientBuilder.build(); HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); factory.setHttpClient(client); restTemplate.setRequestFactory(factory);
-
==============================
3.동일한 코드를 사용했지만 407.proxy 자격 증명이 curl 명령을 사용하여 올바르게 작동하지만 위 코드를 사용하면 작동하지 않습니다. 어떤 생각?
동일한 코드를 사용했지만 407.proxy 자격 증명이 curl 명령을 사용하여 올바르게 작동하지만 위 코드를 사용하면 작동하지 않습니다. 어떤 생각?
from https://stackoverflow.com/questions/31273236/spring-resttemplate-and-proxy-auth by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] @Document 주석의 MongoDB 및 SpEL 표현식 (0) | 2019.07.11 |
---|---|
[SPRING] Spring Security maxSession이 작동하지 않습니다. (0) | 2019.07.11 |
[SPRING] Spring 애플리케이션에서 junit 테스트를 실행하는 동안 h2 웹 콘솔에 액세스 (0) | 2019.07.11 |
[SPRING] Spring Framework - GET과 POST의 차이점 (0) | 2019.07.11 |
[SPRING] Spring Data JPA - 프로그래밍 방식으로 JpaRepository 기본 패키지를 설정하는 방법 (0) | 2019.07.11 |