SOAPFaultException «Заголовки MustUnderstand (oasis-200401-wss-wssecurity-secext-1.0.xsd) не поняты»

Я пытаюсь получить информацию от веб-службы, которая использует тип PasswordText WSS. Во-первых, я тестировал его с помощью soapUI и успешно получил данные. Затем я реализовал аутентификацию на Java, написав SecurityHandler:

public final class SecurityHandler implements SOAPHandler {

...

@Override
public boolean handleMessage(SOAPMessageContext messageContext) {
    boolean outInd = (Boolean) messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
    if (outInd) {
        try {
            WSSecUsernameToken builder = new WSSecUsernameToken();
            builder.setPasswordType(WSConstants.PASSWORD_TEXT);
            builder.setUserInfo(_username, _password);
            builder.addNonce();
            builder.addCreated();

            Document doc = messageContext.getMessage().getSOAPPart().getEnvelope().getOwnerDocument();
            WSSecHeader secHeader = new WSSecHeader();
            secHeader.insertSecurityHeader(doc);
            builder.build(doc, secHeader);
        } catch (Exception e) {
            LOGGER.error("Unable to handle SOAP message", e);
            return false;
        }
    }
    return true;
}

...
}

Я проверил объект документа с помощью XMLUtils.PrettyDocumentToString (doc) и увидел, что он похож на XML, отправленный soupUI - вся аутентификационная информация (логин, пароль, nonce и время создания) были на месте, атрибут mustUnderstand тега Security был истинным.

Затем я столкнулся с ошибкой:

javax.xml.ws.soap.SOAPFaultException: Заголовки MustUnderstand: [{ http://docs.oasis-open.org/wss/2004/01/oasis- 200401-wss-wssecurity-secext-1.0.xsd } Безопасность] не поняты

Я нашел советы по удалению атрибута mustUnderstand из тега Security , но это не помогает. У вас есть идеи?

P.S.

Конечная точка веб-службы находится на HTTPS .

Часть политики из WSDL:


    
        
            
                
                    
                        
                            
                        
                    
                    
                        
                            
                        
                    
                    
                        
                            
                        
                    
                    
                
            
            
                
                    
                        
                            
                        
                    
                
            
            
                
            
        
    

Запрос soapUI:


    
        
            
                username
                
                    password
                
                
                    li/0YK2wxrmrHL7Cg+etdQ==
                
                2012-02-21T08:59:10.262Z
            
        
    
    
        
            xxx@example.com
            
            
        
    

Мой запрос:



    
        
            
                username
                
                    password
                
                
                    +jeleKO9zr0/wLjAIYcmSg==
                
                2012-02-21T09:42:03.760Z
            
        
    
    
        
            xxx@example.com
            
            
        
    

18
задан Kenster 6 September 2016 в 12:32
поделиться