2014-11-20 3 views
0

wsdl에 SignedSupportingTokens ws 보안 정책이있는 비누 서비스 용 소형 CXF 클라이언트를 구성하려고합니다. 다음과 같이 CXF 클라이언트를 구성했습니다.SignedSupportingTokens wssecurity policy cxf 클라이언트

<jaxws:client id="secretService" name="{http:/mySecretServiceEndpoint//}Service" createdFromAPI="true"> 
     <jaxws:properties> 
      <entry key="ws-security.signature.properties" value="keystore/secret.properties" /> 
      <entry key="ws-security.encryption.properties" value="keystore/secret.properties" /> 
      <entry key="ws-security.timestamp.timeToLive" value="600" /> 
     </jaxws:properties> 
    </jaxws:client> 

불행히도 다음 오류가있는 메시지를 보내지 못합니다. CXF는 기본적으로 SignedSupportingTokens 정책을 지원하는 경우

Caused by: org.apache.cxf.ws.policy.PolicyException: None of the policy alternatives can be satisfied. 
    at org.apache.cxf.ws.policy.EffectivePolicyImpl.chooseAlternative(EffectivePolicyImpl.java:199) 
    at org.apache.cxf.ws.policy.EffectivePolicyImpl.chooseAlternative(EffectivePolicyImpl.java:192) 
    at org.apache.cxf.ws.policy.EffectivePolicyImpl.initialise(EffectivePolicyImpl.java:96) 
    at org.apache.cxf.ws.policy.PolicyEngineImpl.getEffectiveClientRequestPolicy(PolicyEngineImpl.java:205) 
    at org.apache.cxf.ws.policy.PolicyOutInterceptor.handle(PolicyOutInterceptor.java:98) 
    at org.apache.cxf.ws.policy.AbstractPolicyInterceptor.handleMessage(AbstractPolicyInterceptor.java:44) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) 
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:326) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:279) 
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:138) 

궁금 해서요? 핸들러를 등록해야합니까, 아니면 다른 것을 놓치고 있습니까? 나는 WS-SecurityWS-SecurityPolicy으로 많은 경험이 없기 때문에, 어떤 반응도 높게 평가 될 것입니다.

+0

편집을 위해 Leonel에게 감사드립니다. 지금은 훨씬 나아졌습니다. – andrew

답변

1

언젠가는 누군가를 도울 수있는 내 자신의 질문에 답하십시오! CXF는 SignedSupportingTokens와 훨씬 더 많은 것을 지원합니다. 제 경우에는 서비스 WSDL이 CXF 클라이언트 dint가 이해할 수있는 SignedSupportingTokens에 대해 다른 네임 스페이스를 가지고있었습니다 (일치 할 수 없음).

ws-security 인터셉터를 사용하여 클라이언트를 구성하여이 문제를 해결할 수있었습니다.

관련 문제