JAVA - CXF WS-security"验证消息时遇到安全错误"

时间:2016-06-08 09:12:41

标签: java cxf ws-security

对于这个问题,很抱歉,我完全被阻止了。 我试图在 CXF 框架之上实现Web服务服务器。 Jax-ws 对处理网络服务非常有帮助,它很容易实现。 但是,当您想要引入安全性时会出现问题。

要在实现以下源代码时处理安全性:

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));

我向此Web服务推送以下 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)

如果有人知道我在哪里做错了。

由于

1 个答案:

答案 0 :(得分:1)

您的安全标头中有inProps.put("action", "UsernameToken Timestamp");但没有时间戳。从操作中删除“时间戳”或添加匹配的安全标头。

修改 消息非常明确“安全处理失败(操作不匹配)”因此,查看您的请求会发现另一个错误:wsse:UsernameToken而不是wsse:Usernametoken的{​​{1}} 3}}