제가 아파치 낙타와 CXF에 새로 온 사람과 낙타 CXF를 구성 할 수 있습니다. 자바 DSL에 낙타 CXF 와 같은 방법, 기본 인증
나는 낙타 HTTP 구성 요소를 사용하여 동일한을 달성 할 수 있었다하지만 난 필요당신이 camel-를 사용하려면 사람이 같은
제가 아파치 낙타와 CXF에 새로 온 사람과 낙타 CXF를 구성 할 수 있습니다. 자바 DSL에 낙타 CXF 와 같은 방법, 기본 인증
나는 낙타 HTTP 구성 요소를 사용하여 동일한을 달성 할 수 있었다하지만 난 필요당신이 camel-를 사용하려면 사람이 같은
고정으로 우리를 인도 할 수 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);
@ 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의 현재 버전의
Camel 2.13.x에서 "cxf : // bean : myservice? username = user1 & password = pass"와 같은 CXF 엔드 포인트 uri에 사용자 이름, 비밀번호 옵션을 설정할 수 있습니까? . –
가 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);
}
을 따라서 사용자 이름을 설정하면 기본 인증이 다른 답변과 같이 구성됩니다.
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) –
응답 해 주셔서 감사합니다. 예를 들어, http 구성 요소에 대해 authMethod = Basic ---> ("direct : routes")를 사용하여 동일한 달성을위한 샘플 코드를 제공해 주실 수 있습니까? ("http : // localhost/whatever? authMethod = Basic & authUsername = me & authPassword = secret"); CXF 웹 클라이언트에 대해 위와 비슷한 예제를 사용할 수 있습니까 – Akshat