繁体   English   中英

使用CXF拦截器在WS Security上执行Soap请求时出错

[英]Error while executing soap request on ws security with cxf interceptor

我已经以自上而下的方式开发了一项服务,并且使用apache cxf可以正常工作。 现在,我正在尝试向服务添加基本身份验证。 我已经按照apache cxf文档配置了服务器回调处理程序和spring bean(cxf-servlet.xml)。 但是,我仍然在执行SOAP UI上的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" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsu:Timestamp wsu:Id="TS-14"><wsu:Created>2017-01-20T13:54:07Z</wsu:Created><wsu:Expires>2017-01-20T14:27:27Z</wsu:Expires></wsu:Timestamp>
<wsse:UsernameToken wsu:Id="UsernameToken-13">
<wsse:Username>username</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">vPFjyEznvPB8HkWDOoL7dw==</wsse:Nonce>
<wsu:Created>2017-01-20T13:54:07.244Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>

以下是我的服务器回调处理程序部分。

<bean id="myPasswordCallback"
        class="com.firstbest.webservice.ofacimpl.ServerPasswordCallback" />
    <jaxws:endpoint publish="true" id="ofacid"
        implementor="com.firstbest.webservice.ofacimpl.OfacInquirySearchImpl"
        address="/PerformOFACValidationWS">
        <jaxws:inInterceptors>
            <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
                <constructor-arg>
                    <map>
                        <entry key="action" value="UsernameToken" />
                        <entry key="passwordType" value="PasswordText" />
                        <entry key="passwordCallbackRef">
                            <ref bean="myPasswordCallback" />
                        </entry>
                    </map>
                </constructor-arg>
            </bean>
        </jaxws:inInterceptors>
    </jaxws:endpoint>

我在网上对此尝试了不同的解决方案。 但是帮不了我什么。

下面是错误:

警告:{ http://sdawweaid1.gc.win-na.com/QBE_OFAC/Producer/BridgerInsight/WS/executeIService_SearchWS } OfacInquirySearchImplService#{{ http://sdawweaid1.gc.win-na.com/QBE_OFAC/Producer/ BridgerInsight / WS / executeIService_SearchWS } executeIService_Search引发了异常,现在展开org.apache.cxf.binding.soap.SoapFault:验证org.apache.cxf.ws.security.wss4j.WSS4JUtils.createSoapFault的消息时遇到安全错误(WSS4JUtils.java:233)在org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessageInternal(WSS4JInInterceptor.java:317)在org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4J。 :171),位于org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)的org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:80)。 org.apache.cxf.transpo上的cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)上的rt.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:252)在org.apache.cxf.transport.servlet.ServletController.invoke( org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)(org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:180) org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:218)上的.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299)在javax.servlet.http.HttpServlet.service上(HttpServlet.java:727)在org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274)在org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)在org。 org.mortbay.jetty.security.SecurityHandler.handle(Se上的mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) 在org.mortbay.jetty.servlet.SessionHandler.handle(cur.Handler.java:182)在org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)在org.mortbay.jetty的curityHandler.java:216) org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)的.webapp.WebAppContext.handle(WebAppContext.java:450)org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) )的org.mortbay.jetty.Server.handle(Server.java:326)的org.mortbay.jetty.Serverty.Handler(HandlerWrapper.java:152)的org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection。 org.mortbay.jetty.HttpConnection $ RequestHandler.content(HttpConnection.java:945)处的org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)处的org.mortbay.jetty.HttpParser.parseAvailable的java:542) (HttpParser.java:218)在org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)在org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)在org。 mortbay.thread.QueuedThreadPool $ PoolThread.run(QueuedThreadPool.java:582)原因:org.apache.wss4j.common.ext.WSSecurityException:在处理org.apache.cxf.ws.security.wss4j的标头时发现错误org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessageInternal(WSS4JInIntercept)上的.WSS4JInInterceptor.checkActions(WSS4JInInterceptor.java:361)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM