2014-01-06 2 views
1

제가 아파치 낙타와 CXF에 새로 온 사람과 낙타 CXF를 구성 할 수 있습니다. 자바 DSL에 낙타 CXF 와 같은 방법, 기본 인증

나는 낙타 HTTP 구성 요소를 사용하여 동일한을 달성 할 수 있었다하지만 난 필요

당신이 camel-를 사용하려면 사람이 같은

+2

POJO를 작성하여 서비스를 호출하고 경로에서 빈으로 사용할 수 있습니다. POJO 자체는 f.e를 포함 할 수 있습니다. [기본 인증을위한 팩토리 방법]을 제공하는 [CXF WebClient] (http://cxf.apache.org/javadoc/latest/org/apache/cxf/jaxrs/client/WebClient.html) (http : // cxf .apache.org/javadoc/latest/org/apache/cxf/jaxrs/client/WebClient.html # create % 28java.lang.String, % 20java.lang.String, % 20java.lang.String, % 20java.lang. String % 29) –

+0

응답 해 주셔서 감사합니다. 예를 들어, http 구성 요소에 대해 authMethod = Basic ---> ("direct : routes")를 사용하여 동일한 달성을위한 샘플 코드를 제공해 주실 수 있습니까? ("http : // localhost/whatever? authMethod = Basic & authUsername = me & authPassword = secret"); CXF 웹 클라이언트에 대해 위와 비슷한 예제를 사용할 수 있습니까 – Akshat

답변

2

고정으로 우리를 인도 할 수 cxf 구성 요소를 기본 인증을 설정하려면 CxfEndpoint에서 이와 같이 구성해야합니다.

CxfEndpoint cxfEndpoint = camelContext.getEndpoint(“cxf:xxx”); 
// set the authentication information 
Map<String, Object> properties = new HashMap<String, Object>(); 

org.apache.cxf.configuration.security.AuthorizationPolicy authPolicy = new AuthorizationPolicy(); 
authPolicy.setUserName(username); 
authPolicy.setPassword(password); 
properties.put(AuthorizationPolicy.class.getName(), authPolicy); 

cxfEndpoint.setProperties(properties);  

from(“xxx”).to(cxfEndpoint); 
1

@ Willem의 도움으로이 기능을 구현할 수있었습니다. 인증 자격 증명은 프로세서가 아닌 경로 작성기에서 CXF 끝점으로 전달되어야합니다. 이것은 Williem on Camel 포럼에서 설명한 바와 같습니다 :

프로세서에서 cxfEndpoint 속성을 설정하면 런타임 설정입니다. 낙타 컨텍스트를 시작하는 동안 CxfProducer가 만들어 지므로 cxfEndpoint의 속성이 업데이트되지 않습니다.

그래서, 이것은 경로 빌더에 다음 코드를 추가 수정하기 :

Map<String, Object> properties = new HashMap<String, Object>(); 

AuthorizationPolicy authPolicy = new AuthorizationPolicy(); 
authPolicy.setAuthorizationType(HttpAuthHeader.AUTH_TYPE_BASIC); 
authPolicy.setUserName(USERNAME); 
authPolicy.setPassword(PWD); 
authPolicy.setAuthorization("true"); 

//properties.put(AuthorizationPolicy.class.getName(), authPolicy); 
properties.put("org.apache.cxf.configuration.security.AuthorizationPolicy", authPolicy); 

CxfEndpoint myCxfEp = (CxfEndpoint)getContext().getEndpoint("cxf://"); 
myCxfEp.setProperties(properties); 

또한, 버전의 아파치 낙타의 2.12.3 기본 인증을위한 사용자 이름과 암호 옵션을 소개하고있다. 낙타 CXF의 현재 버전의

+0

Camel 2.13.x에서 "cxf : // bean : myservice? username = user1 & password = pass"와 같은 CXF 엔드 포인트 uri에 사용자 이름, 비밀번호 옵션을 설정할 수 있습니까? . –

0

가 CxfEndpoint에 직접 사용자 이름과 암호를 설정하기에 충분해야한다 : 그냥 CxfEndpoint의 코드로 보았다 발견

cxfEndpoint.setUsername("xyz"); 
csfEndpoint.setPassword("verySecure"); 

:

// setup the basic authentication property 
if (ObjectHelper.isNotEmpty(username)) { 
    AuthorizationPolicy authPolicy = new AuthorizationPolicy(); 
    authPolicy.setUserName(username); 
    authPolicy.setPassword(password); 
    factoryBean.getProperties().put(AuthorizationPolicy.class.getName(), authPolicy); 
} 

을 따라서 사용자 이름을 설정하면 기본 인증이 다른 답변과 같이 구성됩니다.