Извините за этот вопрос, он может появиться повторно, я полностью заблокирован. Я пытаюсь внедрить сервер веб-сервисов в верхней части CXF рамки. Jax-ws очень полезен для обработки веб-сервиса, его легко реализовать. Но проблема возникает, если вы хотите ввести безопасность.JAVA - CXF WS-security «При проверке сообщения возникла ошибка безопасности»
Чтобы справиться с безопасностью в реализации следующий исходный код:
EndpointImpl jaxWsEndpoint = (EndpointImpl) Endpoint.publish(endPointAddress, httpWebService);
inProps.put("action", "UsernameToken Timestamp");
inProps.put("passwordType", "PasswordText");
inProps.put("passwordCallbackClass", "com.company.webService.PasswordListener");
jaxWsEndpoint.getInInterceptors().add(new WSS4JInInterceptor(inProps));
я нажимаю на эту веб-службы следующих SOAP запросу:
...
<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">
<wsse:Usernametoken wsu:id="UsernameToken-27777511" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>admin</wsse:Username>
<wsse:Password type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">pass</wsse:Password>
</wsse:Usernametoken>
</wsse:Security>
</soapenv:Header>
...
рамки CXF получил мою просьбу попробовать для обработки защитной части и бросить мне следующее исключение:
Jun 08, 2016 10:48:24 AM org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor checkActions
WARNING: Security processing failed (actions mismatch)
Jun 08, 2016 10:48:24 AM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
WARNING: Interceptor for {http://httpAbstractHandlerImplementation.webService.company.co /}HttpWebServiceService has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: A security error was encountered when verifying the message at org.apache.cxf.ws.security.wss4j.WSS4JUtils.createSoapFault(WSS4JUtils.java:218)
at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessageInternal(WSS4JInInterceptor.java:316)
Если у кого-то есть идея, где я сделал ошибку.
Благодаря
Большое спасибо за ваш ответ, я уже пробовал это, безуспешно. К сожалению, у меня такое же исключение. – BrK
Два вопроса: Какие версии cxf и wss4j вы используете и что именно вы пытались? Удалить действие или добавить временную метку? Если последнее: вы проверили порядок заголовков? Очень важно, чтобы порядок заголовков безопасности был точно таким, как ожидает InInterceptor. – Frank
Так что я использую ** CXF ** версию 3.1.6. И чтобы ответить на ваш вопрос, я удалил «Timestamp» из контейнера свойств – BrK