Come risolvere errore di JAX_WS web chiamata di servizio “MustUnderstand intestazioni non sono capito”?

Sto usando SOAPUI strumento per accedere JAX-WS i servizi web distribuiti in Weblogic 10.3.2

Richiesta:


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.pc3.polk.com/">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsu:Timestamp wsu:Id="Timestamp-1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsu:Created>2010-12-03T21:10:43Z</wsu:Created>
<wsu:Expires>2010-12-03T21:44:03Z</wsu:Expires>
</wsu:Timestamp>
<wsu:Timestamp wsu:Id="Timestamp-60" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsu:Created>2010-12-03T20:10:39Z</wsu:Created>
<wsu:Expires>2010-12-03T20:43:59Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken wsu:Id="UsernameToken-59" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>rwerqre</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">ewrqwrwerqer</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">Nmw0ksmiOX+hkiSoWb2Rjg==</wsse:Nonce>
<wsu:Created>2010-12-03T20:10:39.649Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<ws:getMetadata/>
</soapenv:Body>
</soapenv:Envelope>

Risposta:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <SOAP-ENV:Fault xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
         <faultcode>SOAP-ENV:MustUnderstand</faultcode>
         <faultstring>MustUnderstand headers:[{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security] are not understood</faultstring>
      </SOAP-ENV:Fault>
   </S:Body>
</S:Envelope>

InformationsquelleAutor Roman Kagan | 2010-12-06

5 Replies
  1. 9

    È possibile configurare un manichino SOAPHandler per {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security che avrebbe segnato l’intestazione come ‘capito’.

    O si potrebbe cambiare il SAPONE richiesta (sul lato chiamante) per impostare mustUnderstand="0" nell’intestazione di sicurezza.

    Esempio di sicurezza intestazione SOAP con mustUnderstand="0":

    <S:Header xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
       <wsse:Security S:mustUnderstand="0" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
          <wsse:UsernameToken>
             <wsse:Username>USERNAME</wsse:Username>
             <wsse:Password wsse:Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD</wsse:Password>
          </wsse:UsernameToken>
       </wsse:Security>
    </S:Header>
    
    Mi piacerebbe vedere più dettagli sul “configurare un manichino SOAPHandler per {docs.oasis-open.org/wss/2004/01/…}di Sicurezza che avrebbe segnato l’intestazione come ‘capito’.”
    Mi piacerebbe anche vedere un manichino SAPONE Gestore
    Basta implementare un SOAPHandler che restituisce {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security da getHeaders(), ma il cui handle.. metodi di fare nulla (return true). .

    InformationsquelleAutor rustyx

  2. 2

    Come al WS di sicurezza specifiche:
    Il processore DEVE, dopo la decodifica del crittografato blocco di intestazione, processo decifrato blocco di intestazione secondo le SOAP elaborazione di linee guida. Il ricevitore DEVE alzare un errore se il contenuto necessario per un adeguato processo di intestazione blocco rimane criptato o se decifrato intestazione SOAP non è compreso e il valore della S12:mustUnderstand o S11:mustUnderstand attributo decifrato blocco di intestazione è vero. Si noti che al fine di rispettare la lavorazione del SAPONE regole, in questo caso, il processore deve ripristinare eventuali effetti persistenti di elaborazione l’intestazione di sicurezza, come la memorizzazione di un token ricevuto.
    Quindi, si prega di controllare la Configurazione di CallbackHandlers.

    Ah, overarchitected specifiche in piedi nel modo di fare le cose, ancora una volta.

    InformationsquelleAutor Jitendra Vispute

  3. 2

    Problema è con i Gestori. È necessario aggiungere la seguente nell’implementazione del gestore

    public Set<QName> getHeaders() {
        final QName securityHeader = new QName(
            "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
            "Security",
            "wsse");
    
        final HashSet headers = new HashSet();
        headers.add(securityHeader);
        return headers;
    }
    

    InformationsquelleAutor mrigank sharma

  4. -1

    SOAP-UI Navigatore,

    fare clic destro sul progetto->Mostra Vista di Progetto->WS-Security Configurazioni->in Uscita WS-Security Configurazioni
    Deselezionare Deve Capire, e poi invia la richiesta.

    InformationsquelleAutor Gokul

Lascia un commento