WS-Policy issues when upgrading from Axis2 1.6.0 to Axis2 1.6.2
"Shah, Sumit (CGI Federal)" <[email protected]>
| Newsgroups | gmane.text.xml.axis.user |
|---|---|
| Message-ID | <3357D2C72D9A0345A66DFB0B043C04166C9AD92B@FFX-S-EX-C1.cgifederal.com> |
Hello,
I am running into WS Policy parsing issues when upgrading Axis2 from 1.6.0 to 1.6.2. The policies that successfully load (via WSDL11ToAxisServiceBuilder.processPoliciesInDefintion) in version 1.6.0 do not work when I go to 1.6.2. I do notice that in 1.6.2, Axis now uses PolicyBuilder (Neethi) which was not the case in 1.6.0. Is there any change with respect to policy parsing that I should be aware of? I would appreciate any help.
Here is the stack trace:
Caused by: java.lang.NullPointerException
at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.getEventType(XMLStreamReaderWrapper.java:108)
at org.apache.axiom.util.stax.dialect.BEAStreamReaderWrapper.getEncoding(BEAStreamReaderWrapper.java:90)
at org.apache.axiom.om.impl.builder.StAXBuilder.<init>(StAXBuilder.java:125)
at org.apache.axiom.om.impl.builder.StAXOMBuilder.<init>(StAXOMBuilder.java:104)
at org.apache.axiom.om.impl.llom.factory.AbstractOMMetaFactory.createOMBuilder(AbstractOMMetaFactory.java:103)
at org.apache.axiom.om.OMXMLBuilderFactory.createOMBuilder(OMXMLBuilderFactory.java:295)
at org.apache.neethi.builders.converters.DOMToOMConverter.convert(DOMToOMConverter.java:36)
at org.apache.neethi.builders.converters.DOMToOMConverter.convert(DOMToOMConverter.java:32)
at org.apache.neethi.builders.converters.ConverterRegistry.convert(ConverterRegistry.java:159)
at org.apache.neethi.AssertionBuilderFactoryImpl.invokeBuilder(AssertionBuilderFactoryImpl.java:135)
at org.apache.neethi.AssertionBuilderFactoryImpl.build(AssertionBuilderFactoryImpl.java:117)
at org.apache.neethi.PolicyBuilder.processOperationElement(PolicyBuilder.java:224)
at org.apache.neethi.PolicyBuilder.getAllOperator(PolicyBuilder.java:184)
at org.apache.neethi.PolicyBuilder.processOperationElement(PolicyBuilder.java:217)
at org.apache.neethi.PolicyBuilder.getExactlyOneOperator(PolicyBuilder.java:180)
at org.apache.neethi.PolicyBuilder.processOperationElement(PolicyBuilder.java:215)
at org.apache.neethi.PolicyBuilder.getPolicyOperator(PolicyBuilder.java:174)
at org.apache.neethi.PolicyBuilder.getPolicy(PolicyBuilder.java:124)
at org.apache.neethi.PolicyEngine.getPolicy(PolicyEngine.java:111)
at org.apache.axis2.util.PolicyUtil.getPolicyComponent(PolicyUtil.java:173)
at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processPoliciesInDefintion(WSDL11ToAxisServiceBuilder.java:3120)
at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processPoliciesInDefintion(WSDL11ToAxisServiceBuilder.java:3098)
at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:374)
at org.apache.axis2.description.AxisService.createClientSideAxisService(AxisService.java:2369)
at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:211)
This is a sample services file. I am only showing a single operation, but I have multiple operations, each with its own policy:
<service name="WSSecurityTestService" targetNamespace="http://wssecuritytest.impl.webservices.test.com">
<schema schemaNamespace="http://wssecuritytest.impl.webservices.test.com"/>
<parameter name="ServiceClass">com.test.webservices.impl.wssecuritytest.WSSecurityTestService</parameter>
<parameter name="useOriginalwsdl">true</parameter>
<parameter name="wsdlFile">WSSecurityTestService.wsdl</parameter>
<parameter name="modifyUserWSDLPortAddress">true</parameter>
<module ref="addressing"/>
<messageReceivers>
<messageReceiver class="com.test.webservices.receivers.JAXBInOnlyMessageReceiver" mep="http://www.w3.org/ns/wsdl/in-only"/>
<messageReceiver class="com.test.webservices.receivers.JAXBInOnlyMessageReceiver" mep="http://www.w3.org/ns/wsdl/robust-in-only"/>
<messageReceiver class="com.test.webservices.receivers.JAXBMessageReceiver" mep="http://www.w3.org/ns/wsdl/in-out"/>
</messageReceivers>
<operation mep="http://www.w3.org/ns/wsdl/in-out" name="testSAMLTokenSignedNoFault">
<actionMapping>urn:test:WSSecurityTestService#testSAMLTokenSignedNoFault</actionMapping>
<outputActionMapping>urn:testSAMLTokenSignedNoFaultResponse</outputActionMapping>
<faultActionMapping faultName="RecoverableFault">urn:testSAMLTokenSignedNoFaultRecoverableFault</faultActionMapping>
<faultActionMapping faultName="UnrecoverableFault">urn:testSAMLTokenSignedNoFaultUnrecoverableFault</faultActionMapping>
<messageReceiver class="com.test.webservices.receivers.JAXBMessageReceiver" mep="http://www.w3.org/ns/wsdl/in-out"/>
<module ref="rampart"/>
<wsp:Policy xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SAMLPolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V1Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:TripleDesRsa15/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
</wsp:Policy>
</sp:Wss10>
<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
</sp:SignedParts>
<rampart:RampartConfig xmlns:rampart="http://ws.apache.org/rampart/policy">
<rampart:user>interca</rampart:user>
<rampart:passwordCallbackClass>com.test.security2.webservices.WSS4JPWCallback</rampart:passwordCallbackClass>
<rampart:timestampPrecisionInMilliseconds>true</rampart:timestampPrecisionInMilliseconds>
<rampart:timestampTTL>300</rampart:timestampTTL>
<rampart:timestampMaxSkew>300</rampart:timestampMaxSkew>
<rampart:nonceLifeTime>300</rampart:nonceLifeTime>
<rampart:signatureCrypto>
<rampart:crypto provider="com.test.security2.csf.webservices.WSS4JCSFCryptoImpl">
...
</rampart:crypto>
</rampart:signatureCrypto>
</rampart:RampartConfig>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
</operation>
</service>