2017-02-19 42 views
0

Я использую только JAXWS-Maven-плагин (нет Spring или любой другой библиотеку) для создания моего вебсервиса классов клиента из WSDL, который прекрасно работает за исключением того, что мне нужно использовать WS-Security для для шифрования определенного подэлемента моего запроса.Webservice клиент с шифрованием WS-Security с помощью JAXWS-Maven-плагина

Не могли бы вы указать мне какую-либо документацию или дать мне подсказку, как ее настроить? Есть ли файл конфигурации, где я устанавливаю следующее? Или мне нужно использовать другую библиотеку, такую ​​как Apache CXF?

WS-A Версия: 200508

Идентификатор ключа Тип: Binary маркеров безопасности

Симметричный Кодирование Алгоритм: AES256-CBC

Key Encryption Algorithm: RSA-OAEP-MGF1P

Набор алгоритмов: Basic256Sha256

Encypted elements XPath: // xxx/yy y

Спасибо!

ответ

0

То, что я узнал: (заметьте, я до сих пор не понимаю, что происходит)

  • Wildfly использует встроенный в Apache CXF каким-то образом (Glassfish реализация и конфигурация отличается)
  • мне пришлось модифицировать предоставил WSDL для добавления WS-Policy (не нашел способа добавить его во внешний файл или где-то без изменения WSDL, который я не являюсь автором) - см. ниже
  • Пришлось предоставить хранилище ключей
  • и настроить доступ к нему:

    XxxService service = new XxxService(); 
    BindingProvider bp = (BindingProvider) service.getXxxPort(); 
    final Map<String, Object> rqc = bp.getRequestContext(); 
    
    Properties p = new Properties(); 
    p.setProperty("org.apache.ws.security.crypto.merlin.keystore.file", ...); 
    p.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", ...); 
    p.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", ...); 
    p.setProperty("org.apache.ws.security.crypto.merlin.keystore.alias", ...); 
    
    rqc.put("security.signature.properties", p); 
    rqc.put("security.encryption.properties", p); 
    

WSDL Пример

<?xml version="1.0" encoding="UTF-8"?> 
<wsdl:definitions ... > 

... 

<wsdl:binding name="..." type="..."> 
    <wsaw:UsingAddressing wsdl:required="false" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" /> 
    <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 

      <!-- added to wsdl for encryption --> 
      <wsp:PolicyReference URI="#general_policy" /> 

    <wsdl:operation name="xxx"> 
     <wsdlsoap:operation soapAction="" /> 
     <wsdl:input name="..."> 
          <!-- added to wsdl for encryption --> 
          <wsp:PolicyReference URI="#xxx_policy" /> 
      <wsdlsoap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output ... > 
    </wsdl:operation> 

</wsdl:binding> 



    <!-- added to wsdl for encryption --> 

    <wsp:Policy wsu:Id="general_policy" 
       xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
       xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" 
       xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
     <wsp:ExactlyOne> 
      <wsp:Policy> 
       <wsp:All> 
        <sp:AsymmetricBinding> 
         <wsp:Policy> 
          <sp:InitiatorToken> 
           <wsp:Policy> 
            <sp:X509Token 
             sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never"> 
             <wsp:Policy> 
              <sp:WssX509V3Token10/> 
             </wsp:Policy> 
            </sp:X509Token> 
           </wsp:Policy> 
          </sp:InitiatorToken> 
          <sp:RecipientToken> 
           <wsp:Policy> 
            <sp:X509Token 
             sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never"> 
             <wsp:Policy> 
              <sp:WssX509V3Token10/> 
             </wsp:Policy> 
            </sp:X509Token> 
           </wsp:Policy>        
          </sp:RecipientToken> 
          <sp:Layout> 
           <wsp:Policy> 
            <sp:Strict /> 
           </wsp:Policy> 
          </sp:Layout> 
          <sp:AlgorithmSuite> 
           <wsp:Policy> 
            <sp:Basic256/> 
           </wsp:Policy> 
          </sp:AlgorithmSuite> 
         </wsp:Policy> 
        </sp:AsymmetricBinding> 
       </wsp:All> 
      </wsp:Policy> 
     </wsp:ExactlyOne> 
    </wsp:Policy> 


    <wsp:Policy wsu:Id="xxx_policy"> 
     <wsp:ExactlyOne> 
      <wsp:All> 
       <sp:ContentEncryptedElements 
        xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> 
        <sp:XPath>/*[namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/' and local-name()='Envelope']/*[namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/' and local-name()='Body']/*[namespace-uri()='xxx' and local-name()='xxxRequest']/yyy</sp:XPath> 
       </sp:ContentEncryptedElements> 
      </wsp:All> 
     </wsp:ExactlyOne> 
    </wsp:Policy> 
</wsdl:definitions> 

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

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