2015-07-21 1 views
0

Может быть, я могу найти здесь какой-нибудь helpe. Мне нужно получить доступ к веб-сервису, но сначала мне нужно проверить подлинность моего клиента с помощью хранилища ключей. Я не могу использовать весну. В весенне-ws.xml такая конфигурация работает для клиентов моих коллег:Клиент Java Web Service с хранилищем ключей

<bean class="org.springframework.ws.soap.security.wss4j.support.CryptoFactoryBean" id="clientCrypto"> 
    <property name="configuration"> 
     <util:properties> 
      <prop key="org.apache.ws.security.crypto.provider">org.apache.ws.security.components.crypto.Merlin</prop> 
      <prop key="org.apache.ws.security.crypto.merlin.keystore.type">jks</prop> 
      <prop key="org.apache.ws.security.crypto.merlin.keystore.password">${esb.keystore.password}</prop> 
      <prop key="org.apache.ws.security.crypto.merlin.keystore.alias">${esb.keystore.user}</prop> 
      <prop key="org.apache.ws.security.crypto.merlin.file">src\main\resources\${esb.keystore.location}</prop> 
     </util:properties> 
    </property> 
</bean> 

Мой клиент, как это:

PortalCustomerService service = new PortalCustomerService(); 
PortalCustomerPortType port = service.getSomethingHttpPort(); 

BindingProvider bindingProvider = (BindingProvider) port; 
Binding binding = bindingProvider.getBinding(); 
List<Handler> handlerList = binding.getHandlerChain(); 
handlerList.add(new MyHandler()); 
binding.setHandlerChain(handlerList); 

//calling webmethod 
MyResponse response = port.checkClients(getRequest()); 

и MyHandler имеет метод handleMessage так:

public boolean handleMessage(SOAPMessageContext messageContext) { 
    Boolean outboundProperty = (Boolean) messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); 

    if (outboundProperty.booleanValue()) { 
     // I think I need to add something here but I dont know what 
    } else {} 

    return true; 
} 

У меня есть закрытый ключ: myportal.key, открытый ключ: portal.cer.
Без аутентификации я получил:

javax.xml.ws.soap.SOAPFaultException: An error was discovered processing the <wsse:Security> header 
+0

Это очень плохой вопрос, Извините :( – Geek

+0

Как я могу улучшить это? :) – marram

+0

System.setProperty ("javax.net.ssl.keyStore", keystore); System.setProperty ("javax.net.ssl.keyStorePassword", пароль); wont help :( – marram

ответ

0

Вы можете получить некоторую помощь, следуя

System.setProperty("javax.net.debug","all"); 

Если ключ самоподписан, поэтому вам может понадобиться установить TrustStore свойства тоже.

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

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