[
https://issues.apache.org/jira/browse/CXF-3539?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp resolved CXF-3539.
------------------------------
Resolution: Fixed
Fix Version/s: 2.3.5
2.4.1
Assignee: Daniel Kulp
It looks like "" is the right thing to do so I've changed it to do that.
> NPE when sending packet to STS using default namespaces instead of namespace
> prefixes
> -------------------------------------------------------------------------------------
>
> Key: CXF-3539
> URL: https://issues.apache.org/jira/browse/CXF-3539
> Project: CXF
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.4
> Reporter: Alistair Phipps
> Assignee: Daniel Kulp
> Labels: Exception, NPE
> Fix For: 2.4.1, 2.3.5
>
>
> common/common/src/main/java/org/apache/cxf/staxutils/StaxSource#getAttributes()
> sets the "localname" to null for default namespaces changes. However, when
> this is set it causes JAXB binding to throw an NPE in
> com.sun.xml.internal.bind.v2.util.QNameMap.hash(). This occurs when creating
> an STS using the CXF STS provider framework and sending a RST packet which
> uses default namespaces instead of namespace prefixes.
> A workaround that seems to work for the STS is setting the localname to ""
> instead of null, however I'm not sure what other effects that might have.
> Example packet:
> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:s="http://www.w3.org/2001/XMLSchema"
> 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"
>
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><Security
>
> xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><Timestamp
>
> xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
>
> xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
>
> wsu:Id="Timestamp"><Created>2011-05-19T20:25:45.197Z</Created><Expires>2011-05-19T20:30:45.197Z</Expires></Timestamp><BinarySecurityToken
>
> EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
>
> ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
> wsu:Id="SecurityToken">...snip...</BinarySecurityToken><Signature
> xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod
> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><SignatureMethod
> Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference
> URI="#Timestamp"><Transforms><Transform
> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod
>
> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>...snip...</DigestValue></Reference></SignedInfo><SignatureValue>...snip...</SignatureValue><KeyInfo><SecurityTokenReference
>
> xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><Reference
> URI="#SecurityToken"
> ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></SecurityTokenReference></KeyInfo></Signature></Security></SOAP-ENV:Header><SOAP-ENV:Body><RequestSecurityToken
> xmlns="http://docs.oasis-open.org/ws-sx/ws-trust/200512"
> xmlns:s="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SecondaryParameters><TokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</TokenType></SecondaryParameters><RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</RequestType><AppliesTo
> xmlns="http://schemas.xmlsoap.org/ws/2004/09/policy"><EndpointReference
> xmlns="http://www.w3.org/2005/08/addressing"><Address>...snip...</Address></EndpointReference></AppliesTo><KeyType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey</KeyType><KeySize>256</KeySize></RequestSecurityToken></SOAP-ENV:Body></SOAP-ENV:Envelope>
> Example stacktrace:
> java.lang.NullPointerException
> at com.sun.xml.internal.bind.v2.util.QNameMap.hash(QNameMap.java:201)
> at
> com.sun.xml.internal.bind.v2.util.QNameMap.getEntry(QNameMap.java:452
> )
> at com.sun.xml.internal.bind.v2.util.QNameMap.get(QNameMap.java:147)
> [note: 2nd param(s1) = null]
> at
> com.sun.xml.internal.bind.v2.runtime.unmarshaller.StructureLoader.sta
> rtElement(StructureLoader.java:187)
> [note: s1 = attributes.getLocalName(i); . .... = null]
> at
> com.sun.xml.internal.bind.v2.runtime.unmarshaller.ProxyLoader.startEl
> ement(ProxyLoader.java:44)
> at
> com.sun.xml.internal.bind.v2.runtime.ElementBeanInfoImpl$IntercepterL
> oader.startElement(ElementBeanInfoImpl.java:226)
> at
> com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContex
> t._startElement(UnmarshallingContext.java:470)
> at
> com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContex
> t.startElement(UnmarshallingContext.java:448)
> at
> com.sun.xml.internal.bind.v2.runtime.unmarshaller.InterningXmlVisitor
> .startElement(InterningXmlVisitor.java:60)
> at
> com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startE
> lement(SAXConnector.java:137)
> at org.apache.cxf.staxutils.StaxSource.parse(StaxSource.java:138)
> at org.apache.cxf.staxutils.StaxSource.parse(StaxSource.java:270)
> at
> com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.un
> marshal0(UnmarshallerImpl.java:200)
> at
> com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.un
> marshal(UnmarshallerImpl.java:173)
> at
> javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm
> arshallerImpl.java:120)
> at
> javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm
> arshallerImpl.java:103)
> at
> org.apache.cxf.ws.security.sts.provider.SecurityTokenServiceProvider.
> convertToJAXBObject(SecurityTokenServiceProvider.java:255)
> at
> org.apache.cxf.ws.security.sts.provider.SecurityTokenServiceProvider.
> invoke(SecurityTokenServiceProvider.java:182)
> at
> org.apache.cxf.ws.security.sts.provider.SecurityTokenServiceProvider.
> invoke(SecurityTokenServiceProvider.java:64)
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira