23.20. 고급 사용량
HTTP 프로듀서에 대한 더 많은 제어가 필요한 경우, 사용자 지정 동작을 제공하기 위해 다양한 클래스를 설정할 수 있는>-< Component
를 사용해야 합니다.
23.20.1. HTTP 클라이언트용 SSL 설정 링크 복사링크가 클립보드에 복사되었습니다!
JSSE 설정 utility 사용
HTTP 구성 요소는 Camel JSSE 구성 utility 를 통해 SSL/TLS 구성을 지원합니다. 이 유틸리티를 사용하면 작성하는데 필요한 구성 요소별 코드의 양이 크게 감소하고 끝점 및 구성 요소 수준에서 구성할 수 있습니다. 다음 예제에서는 HTTP 구성 요소에서 유틸리티를 사용하는 방법을 보여줍니다.
구성 요소의 프로그래밍 방식 구성
끝점의 Spring DSL 기반 구성
Apache HTTP 클라이언트 직접 구성
기본적으로 camel-http 구성 요소는 Apache 10.0.0.1Client 상단에 빌드됩니다. 자세한 내용은 SSL/TLS 사용자 지정을 참조하거나 org.apache.camel.component.http.HttpsServerTestSupport
단위 테스트 기본 클래스를 살펴보십시오.
사용자 정의 org.apache.camel.component.http.HttpClientConfigurer
를 구현하여 http 클라이언트에서 전체 제어가 필요한 경우 일부 구성을 수행할 수도 있습니다.
그러나 키 저장소 및 신뢰 저장소를 지정하려는 경우 Apache HTTPECDHE ClientConfigurer
를 사용하여 이 작업을 수행할 수 있습니다. 예를 들면 다음과 같습니다.
KeyStore keystore = ...; KeyStore truststore = ...; SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("https", 443, new SSLSocketFactory(keystore, "mypassword", truststore)));
KeyStore keystore = ...;
KeyStore truststore = ...;
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("https", 443, new SSLSocketFactory(keystore, "mypassword", truststore)));
그런 다음 10.0.0.1 ClientConfigurer
를 구현하는 클래스를 생성하고 위의 예제마다 키 저장소 또는 신뢰 저장소를 제공하는 https 프로토콜을 등록해야합니다. 그런 다음 camel route 빌더 클래스에서 다음과 같이 연결할 수 있습니다.
HttpComponent httpComponent = getContext().getComponent("http", HttpComponent.class); httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer());
HttpComponent httpComponent = getContext().getComponent("http", HttpComponent.class);
httpComponent.setHttpClientConfigurer(new MyHttpClientConfigurer());
Spring DSL을 사용하여 이 작업을 수행하는 경우 URI를 사용하여 10.0.0.1 ClientConfigurer
를 지정할 수 있습니다. 예를 들면 다음과 같습니다.
<bean id="myHttpClientConfigurer" class="my.https.HttpClientConfigurer"> </bean> <to uri="https://myhostname.com:443/myURL?httpClientConfigurer=myHttpClientConfigurer"/>
<bean id="myHttpClientConfigurer"
class="my.https.HttpClientConfigurer">
</bean>
<to uri="https://myhostname.com:443/myURL?httpClientConfigurer=myHttpClientConfigurer"/>
>-<ClientConfigurer를 구현하고 위에서 설명한대로 키 저장소 및 신뢰 저장소를 구성하는 한, 잘 작동합니다.
HTTPS를 사용하여 gotchas 인증
최종 사용자는 HTTPS를 사용한 인증에 문제가 있다고 보고했습니다. 사용자 정의 구성된 org.apache.http.protocol.HttpContext
를 제공하여 결국 문제를 해결했습니다.
- 1. 10.0.0.1Contexts에 대한 (Spring) 팩토리를 생성합니다.
- 2. Spring 애플리케이션 컨텍스트 파일에서 10.0.0.1Context를 선언합니다.
<bean id="myHttpContext" factory-bean="httpContextFactory" factory-method="getObject"/>
<bean id="myHttpContext" factory-bean="httpContextFactory" factory-method="getObject"/>
- 3. http URL에서 컨텍스트를 참조합니다.
<to uri="https://myhostname.com:443/myURL?httpContext=myHttpContext"/>
<to uri="https://myhostname.com:443/myURL?httpContext=myHttpContext"/>
다른 SSLContextParameters 사용
HTTP 구성 요소는 구성 요소당 org.apache.camel.support.jsse.SSLContextParameters
인스턴스 하나만 지원합니다. 2개 이상의 인스턴스를 사용해야 하는 경우 다음과 같이 여러 HTTP 구성 요소를 설정해야 합니다. 2개의 구성 요소가 있는 경우 각각 sslContextParameters
속성의 자체 인스턴스를 사용합니다.