【问题标题】:WSO2 : RAMPARTUTIL throwing null pointer execptionWSO2:RAMPART UTIL 抛出空指针异常
【发布时间】:2016-04-07 21:10:56
【问题描述】:

我创建了一个带有 RAMPART 实现的 Web 服务。

服务流程: 发送者 -> 使用他的私钥签署消息 -> 使用服务器公钥加密消息 -> 发送给接收者 接收者 -> 使用发送者的公钥验证消息 -> 使用他的私钥解密消息 -> 处理信息。

问题: 客户端正在签名和加密消息并发送到服务器 服务器正在成功验证和解密消息。 现在, 解密消息后服务器处理值 & 必须向客户回复状态。 返回时,我收到以下错误:

SEVERE: Servlet.service() for servlet [AxisServlet] in context with path [/webService] threw exception
java.lang.NullPointerException
    org.apache.rampart.util.RampartUtil.setKeyIdentifierType(RampartUtil.java:1389)
    org.apache.rampart.builder.BindingBuilder.getSignatureBuilder(BindingBuilder.java:266)
    org.apache.rampart.builder.BindingBuilder.getSignatureBuilder(BindingBuilder.java:250)
    org.apache.rampart.builder.AsymmetricBindingBuilder.doSignature(AsymmetricBindingBuilder.java:760)
    org.apache.rampart.builder.AsymmetricBindingBuilder.doSignBeforeEncrypt(AsymmetricBindingBuilder.java:417)
    org.apache.rampart.builder.AsymmetricBindingBuilder.build(AsymmetricBindingBuilder.java:88)
    org.apache.rampart.MessageBuilder.build(MessageBuilder.java:147)
    org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:65)
    org.apache.axis2.engine.Phase.invokeHandler(Phase.java:340)
    org.apache.axis2.engine.Phase.invoke(Phase.java:313)
    org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:262)
    org.apache.axis2.engine.AxisEngine.sendFault(AxisEngine.java:516)
    org.apache.axis2.transport.http.AxisServlet.handleFault(AxisServlet.java:433)
    org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:216)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:550)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

另外,我已经实现了没有 RAMPART 的服务,在这种情况下响应是成功的。

请指教,我在过去 2 天里一直在苦苦挣扎.. 由于请求解密成功,无法理解我缺少什么,但响应抛出异常。

【问题讨论】:

    标签: wso2 axis2 rampart


    【解决方案1】:

    我添加了以下块,错误已解决:

    <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
      <wsp:Policy>
        <sp:MustSupportRefKeyIdentifier/>
        <sp:MustSupportRefIssuerSerial/>
      </wsp:Policy>
    </sp:Wss10>
    

    【讨论】:

    • 感谢您在 3 年多前遇到过这个问题,我遇到了完全相同的问题,您的解决方案效果很好:D
    猜你喜欢
    • 1970-01-01
    • 2020-11-22
    • 2020-08-10
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多