eclipse-ee4j / eclipse-ee4j/metro-wsit
client side Internal error in security processing of .Net 3.0 transacted web service
- Dominant language
- Java
- Stars
- 6
- Forks
- 21
- Avg merge
- 10h 2m
- Merged PRs (30d)
- 1
Description
Following stack trace is from Java web service client accessing
.Net 3.0 WCF sample for WS-Atomic Transaction. Here is path to
MS web service in sample that comes with .Net 3.0 RTM.
Will attach the Java web service client to bug report.
MS service is found in
WCFSamples\TechnologySamples\Basic\Binding\WS\TransactionFlow\CS\service.
Java web service client was configured with keystore/truststore updated
with copyv3 certificates.
Summary of stack trace: (full stack trace at end of report)
WSITPVD0012: Internal Error: Could not detect whether Reliable Messaging is
enabled or not.
java.lang.NullPointerException
at
com.sun.xml.ws.security.impl.policyconv.BindingProcessor.addPrimaryTargets
(BindingProcessor.java:167)
at
com.sun.xml.ws.security.impl.policyconv.SymmetricBindingProcessor.process
(SymmetricBindingProcessor.java:123)
at com.sun.xml.ws.security.impl.policyconv.XWSSPolicyGenerator.process
(XWSSPolicyGenerator.java:149)
Possible problem:
Unsure if need to configure trust store. If need to, could not figure out from
quick check in tutorial how to do it. In any event, error message does not
state that web service requires trust store to be configured.
To run submitted bug case successfully, one does need to do following
ssl security for WS-AT/Coordination protcol messages to work.
To configure https security for MS WS-AT, see .Net 3.0 WS-AT configuration at
[http://msdn2.microsoft.com/en-us/library/ms733943.aspx](http://msdn2.microsoft.com/en-us/library/ms733943.aspx).
To configure https security for Sun Client, the machine involved must have
static ip address and fully qualified dns name. To export the Sun Client
security certificate to be imported into .Net 3.0 WS-AT security
run
% keytool -export -keystore /domains/domain1/config/keystore.jks -
alias s1as -file
Follow directions in .Net 3.0 instructions on how to import this security
certificate and use it .Net 3.0 WS-AT configuration. The .Net 3.0 security
certificate for WS-AT endpoint must be exported and imported into glassfish
truststore using following commaind.
%keytool -import -keystore /domains/domain1/config/cacerts.jks -
alias someName -file
Full stack trace:
WSITPVD0012: Internal Error: Could not detect whether Reliable Messaging is
enabled or not.
java.lang.NullPointerException
at
com.sun.xml.ws.security.impl.policyconv.BindingProcessor.addPrimaryTargets
(BindingProcessor.java:167)
at
com.sun.xml.ws.security.impl.policyconv.SymmetricBindingProcessor.process
(SymmetricBindingProcessor.java:123)
at com.sun.xml.ws.security.impl.policyconv.XWSSPolicyGenerator.process
(XWSSPolicyGenerator.java:149)
at com.sun.xml.ws.security.impl.policyconv.XWSSPolicyGenerator.process
(XWSSPolicyGenerator.java:119)
at
com.sun.xml.wss.provider.wsit.WSITAuthContextBase.constructPolicyHolder
(WSITAuthContextBase.java:837)
at
com.sun.xml.wss.provider.wsit.WSITClientAuthContext.addIncomingProtocolPolicy
(WSITClientAuthContext.java:393)
at com.sun.xml.wss.provider.wsit.WSITAuthContextBase.buildProtocolPolicy
(WSITAuthContextBase.java:790)
at com.sun.xml.wss.provider.wsit.WSITAuthContextBase.collectPolicies
(WSITAuthContextBase.java:332)
at com.sun.xml.wss.provider.wsit.WSITAuthContextBase.
(WSITAuthContextBase.java:278)
at com.sun.xml.wss.provider.wsit.WSITClientAuthContext.
(WSITClientAuthContext.java:112)
at com.sun.xml.wss.provider.wsit.WSITClientAuthConfig.getAuthContext
(WSITClientAuthConfig.java:116)
at
com.sun.enterprise.security.jmac.config.PipeHelper.getClientAuthContext
(PipeHelper.java:102)
at com.sun.enterprise.webservice.ClientSecurityPipe.process
(ClientSecurityPipe.java:143)
at com.sun.xml.ws.tx.client.TxClientPipe.process(TxClientPipe.java:228)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest
(PipeAdapter.java:79)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:559)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:518)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:503)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:400)
at com.sun.xml.ws.client.Stub.process(Stub.java:228)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:120)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke
(SyncMethodHandler.java:226)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke
(SyncMethodHandler.java:206)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:103)
at $Proxy91.add(Unknown Source)
at calculator.client.CalculatorClientServlet.processRequest
(CalculatorClientServlet.java:82)
at calculator.client.CalculatorClientServlet.doGet
(CalculatorClientServlet.java:208)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:705)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at org.apache.catalina.core.ApplicationFilterChain.servletService
(ApplicationFilterChain.java:398)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:277)
at org.apache.catalina.core.StandardContextValve.invokeInternal
(StandardContextValve.java:255)
at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:611)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:564)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:81)
at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:207)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:611)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:558)
at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:1067)
at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:137)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:611)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:558)
at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:1067)
at org.apache.coyote.tomcat5.CoyoteAdapter.service
(CoyoteAdapter.java:249)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter
(DefaultProcessorTask.java:618)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess
(DefaultProcessorTask.java:549)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process
(DefaultProcessorTask.java:790)
at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask
(DefaultReadTask.java:326)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask
(DefaultReadTask.java:248)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask
(DefaultReadTask.java:199)
at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask
(PortUnificationPipeline.java:328)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run
(TaskBase.java:252)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run
(SSLWorkerThread.java:93)
SEC2004: Container-auth: wss: Error securing request
java.lang.RuntimeException: WSITPVD0012: Internal Error: Could not detect
whether Reliable Messaging is enabled or not.
at com.sun.xml.wss.provider.wsit.WSITAuthContextBase.
(WSITAuthContextBase.java:286)
at com.sun.xml.wss.provider.wsit.WSITClientAuthContext.
(WSITClientAuthContext.java:112)
at com.sun.xml.wss.provider.wsit.WSITClientAuthConfig.getAuthContext
(WSITClientAuthConfig.java:116)
at
com.sun.enterprise.security.jmac.config.PipeHelper.getClientAuthContext
(PipeHelper.java:102)
at com.sun.enterprise.webservice.ClientSecurityPipe.process
(ClientSecurityPipe.java:143)
at com.sun.xml.ws.tx.client.TxClientPipe.process(TxClientPipe.java:228)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest
(PipeAdapter.java:79)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:559)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:518)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:503)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:400)
at com.sun.xml.ws.client.Stub.process(Stub.java:228)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:120)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke
(SyncMethodHandler.java:226)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke
(SyncMethodHandler.java:206)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:103)
at $Proxy91.add(Unknown Source)
at calculator.client.CalculatorClientServlet.processRequest
(CalculatorClientServlet.java:82)
at calculator.client.CalculatorClientServlet.doGet
(CalculatorClientServlet.java:208)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:705)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at org.apache.catalina.core.ApplicationFilterChain.servletService
(ApplicationFilterChain.java:398)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:277)
at org.apache.catalina.core.StandardContextValve.invokeInternal
(StandardContextValve.java:255)
at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:611)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:564)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:81)
at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:207)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:611)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:558)
at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:1067)
at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:137)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:611)
at org.apache.catalina.core.StandardPipeline.doInvoke
(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:558)
at org.apache.catalina.core.ContainerBase.invoke
(ContainerBase.java:1067)
at org.apache.coyote.tomcat5.CoyoteAdapter.service
(CoyoteAdapter.java:249)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter
(DefaultProcessorTask.java:618)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess
(DefaultProcessorTask.java:549)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process
(DefaultProcessorTask.java:790)
at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask
(DefaultReadTask.java:326)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask
(DefaultReadTask.java:248)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask
(DefaultReadTask.java:199)
at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask
(PortUnificationPipeline.java:328)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run
(TaskBase.java:252)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run
(SSLWorkerThread.java:93)
Caused by: java.lang.NullPointerException
at
com.sun.xml.ws.security.impl.policyconv.BindingProcessor.addPrimaryTargets
(BindingProcessor.java:167)
at
com.sun.xml.ws.security.impl.policyconv.SymmetricBindingProcessor.process
(SymmetricBindingProcessor.java:123)
at com.sun.xml.ws.security.impl.policyconv.XWSSPolicyGenerator.process
(XWSSPolicyGenerator.java:149)
at com.sun.xml.ws.security.impl.policyconv.XWSSPolicyGenerator.process
(XWSSPolicyGenerator.java:119)
at
com.sun.xml.wss.provider.wsit.WSITAuthContextBase.constructPolicyHolder
(WSITAuthContextBase.java:837)
at
com.sun.xml.wss.provider.wsit.WSITClientAuthContext.addIncomingProtocolPolicy
(WSITClientAuthContext.java:393)
at com.sun.xml.wss.provider.wsit.WSITAuthContextBase.buildProtocolPolicy
(WSITAuthContextBase.java:790)
at com.sun.xml.wss.provider.wsit.WSITAuthContextBase.collectPolicies
(WSITAuthContextBase.java:332)
at com.sun.xml.wss.provider.wsit.WSITAuthContextBase.
(WSITAuthContextBase.java:278)
... 47 more
#### Environment
Operating System: All
Platform: All
#### Affected Versions
[current]
Source: [https://github.com/javaee/metro-wsit/issues/420](https://github.com/javaee/metro-wsit/issues/420)
Author: glassfishrobot
Contributor guide
Research direction
Start with com.sun.xml.ws.security.impl.policyconv.BindingProcessor.addPrimaryTargets at line 167 and follow the calls through SymmetricBindingProcessor and XWSSPolicyGenerator. Reproduce with the WS-AT .NET sample and the calculator client at CalculatorClientServlet.java:82, using the certificate setup described; done means the client no longer fails with the reported NullPointerException and the failure is actionable.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend-api-design, distributed-systems, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100