2015-04-23 2 views
1

У меня есть следующие Ws политики внутри моей WSDL:WS-Security: HttpsToken не может быть предъявлен

<wsp:Policy wssutil:Id="Wssp1.2-2007-Https-UsernameToken-Plain.xml"> 
    <ns1:TransportBinding xmlns:ns1="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> 
     <wsp:Policy> 
      <ns1:TransportToken> 
       <wsp:Policy> 
        <ns1:HttpsToken/> 
       </wsp:Policy> 
      </ns1:TransportToken> 
      <ns1:AlgorithmSuite> 
       <wsp:Policy> 
        <ns1:Basic256/> 
       </wsp:Policy> 
      </ns1:AlgorithmSuite> 
      <ns1:Layout> 
       <wsp:Policy> 
        <ns1:Lax/> 
       </wsp:Policy> 
      </ns1:Layout> 
      <ns1:IncludeTimestamp/> 
     </wsp:Policy> 
    </ns1:TransportBinding> 
    <ns2:SupportingTokens xmlns:ns2="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> 
     <wsp:Policy> 
      <ns2:UsernameToken 
       ns2:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"> 
       <wsp:Policy> 
        <ns2:WssUsernameToken10/> 
        <ns2:HashPassword/> 
       </wsp:Policy> 
      </ns2:UsernameToken> 
     </wsp:Policy> 
    </ns2:SupportingTokens> 
</wsp:Policy> 

Для supporut WS безопасности внутри моего клиента я реализовал:

 ((BindingProvider) port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, this.URL); 

     AddressingProperties maps = new AddressingPropertiesImpl(); 
     ((BindingProvider) port).getRequestContext().put("javax.xml.ws.addressing.context", maps); 

     Map<String, Object> ctx = ((BindingProvider) port).getRequestContext(); 

     ctx.put("ws-security.callback-handler", UsernamePasswordCallback.class.getName()); 

     UsernamePasswordCallback.user = this.USER; 
     UsernamePasswordCallback.pass = this.PASS; 

     ctx.put("ws-security.username", UsernamePasswordCallback.user); 
     ctx.put("ws-security.callback-handler", UsernamePasswordCallback.class.getName()); 

     Client client = ClientProxy.getClient(port); 
     client.getOutInterceptors().add(new LoggingOutInterceptor()); 
     client.getInInterceptors().add(new LoggingInInterceptor()); 

As насколько я понимаю, так вы обычно это делаете, когда у вас есть WssUsernameToken10 и HashPassword. Проблемы, как представляется, с TransportBinding:

HttpsToken could not be asserted: HttpURLConnection is not a HttpsURLConnection 

Некоторые люди столкнулись с этой проблемой в прошлом, к сожалению, кажется, нет никакого решения, ни одного ответа.

Буду признателен за любые мысли.

+0

Вы решили эту проблему? – ronnyfm

+1

Да, извините, забыли написать ответ;) – pzeszko

ответ

1

Если кто-то сталкивается с подобной проблемой, я рекомендую посмотреть версию библиотеки cxf: на эту проблему могут возникнуть разные версии на стороне сервера и на стороне клиента.

0

Если вы используете <ns1:HttpsToken/> с HTTP: // URL (например, вы находитесь в среде разработки, не используя протокол HTTPS), то вы, скорее всего, ан сообщение об ошибке жалуются на HttpsToken вопрос с подключением Http Если вы используете соединение HTTP заменить HttpsToken для HttpToken.

 Смежные вопросы

  • Нет связанных вопросов^_^