An iterop scenario with Weblogic as service consumer and Apache CXF (on
JBoss) as service provider fails with a "Referenced security token could not
be retrieved" error.
The referenced security token (SAML assertion) is in place (Reference
"#_0x1f0b85b073c1b3ef9ff63f003b319270"), but CXF cannot resolve it.
Stacktrace:
09:00:25,035 WARNING [org.apache.cxf.phase.PhaseInterceptorChain]
Interceptor for SAML2TestService#doit has thrown exception, unwinding now:
org.apache.cxf.binding.soap.SoapFault: The signature or decryption was
invalid
at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.createSoapFault(WSS4JInInterceptor.java:804)
[jbossweb-7.0.13.Final.jar:]
...
Caused by: org.apache.ws.security.WSSecurityException: The signature or
decryption was invalid
at
org.apache.ws.security.processor.SignatureProcessor.verifyXMLSignature(SignatureProcessor.java:407)
[wss4j.jar:1.6.7]
at
org.apache.ws.security.processor.SignatureProcessor.handleToken(SignatureProcessor.java:197)
[wss4j.jar:1.6.7]
at
org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:396)
[wss4j.jar:1.6.7]
at
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:289)
... 26 more
Caused by: javax.xml.crypto.dsig.XMLSignatureException:
javax.xml.crypto.dsig.TransformException:
org.apache.ws.security.WSSecurityException: Referenced security token could
not be retrieved (Reference "#_0x1f0b85b073c1b3ef9ff63f003b319270")
at
org.apache.jcp.xml.dsig.internal.dom.DOMReference.transform(DOMReference.java:543)
[xmlsec.jar:1.5.2]
at
org.apache.jcp.xml.dsig.internal.dom.DOMReference.validate(DOMReference.java:384)
[xmlsec.jar:1.5.2]
at
org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.validate(DOMXMLSignature.java:267)
[xmlsec.jar:1.5.2]
at
org.apache.ws.security.processor.SignatureProcessor.verifyXMLSignature(SignatureProcessor.java:380)
[wss4j.jar:1.6.7]
... 29 more
Caused by: javax.xml.crypto.dsig.TransformException:
org.apache.ws.security.WSSecurityException: Referenced security token could
not be retrieved (Reference "#_0x1f0b85b073c1b3ef9ff63f003b319270")
at
org.apache.ws.security.transform.STRTransform.transformIt(STRTransform.java:274)
[wss4j.jar:1.6.7]
at
org.apache.ws.security.transform.STRTransform.transform(STRTransform.java:127)
[wss4j.jar:1.6.7]
at
org.apache.jcp.xml.dsig.internal.dom.DOMTransform.transform(DOMTransform.java:166)
[xmlsec.jar:1.5.2]
at
org.apache.jcp.xml.dsig.internal.dom.DOMReference.transform(DOMReference.java:458)
[xmlsec.jar:1.5.2]
... 32 more
Caused by: org.apache.ws.security.WSSecurityException: Referenced security
token could not be retrieved (Reference
"#_0x1f0b85b073c1b3ef9ff63f003b319270")
at
org.apache.ws.security.message.token.SecurityTokenReference.getTokenElement(SecurityTokenReference.java:235)
[wss4j.jar:1.6.7]
at
org.apache.ws.security.transform.STRTransformUtil.dereferenceSTR(STRTransformUtil.java:69)
[wss4j.jar:1.6.7]
at
org.apache.ws.security.transform.STRTransform.transformIt(STRTransform.java:200)
[wss4j.jar:1.6.7]
... 35 more
SOAP message:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
...
<wsse:Security
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
S:mustUnderstand="1">
...
<dsig:Signature
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<dsig:SignedInfo>
<dsig:CanonicalizationMethod
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<dsig:SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<dsig:Reference
URI="#str_rF7CzO4LdKFt5zs6">
<dsig:Transforms>
<dsig:Transform
Algorithm="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform">
<wsse:TransformationParameters>
<dsig:CanonicalizationMethod
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</wsse:TransformationParameters>
</dsig:Transform>
</dsig:Transforms>
<dsig:DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"
/>
<dsig:DigestValue>iRkzoWPRp+m7x3v9JqX3Q/HdqYU=</dsig:DigestValue>
</dsig:Reference>
...
</dsig:SignedInfo>
<dsig:SignatureValue>...</dsig:SignatureValue>
<dsig:KeyInfo>...</dsig:KeyInfo>
</dsig:Signature>
<saml:Assertion
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_0x1f0b85b073c1b3ef9ff63f003b319270"
IssueInstant="2012-11-15T08:00:24.879Z"
Version="2.0">
...
</saml:Assertion>
<wsse:SecurityTokenReference
TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0"
wsu:Id="str_rF7CzO4LdKFt5zs6">
<wsse:Reference
URI="#_0x1f0b85b073c1b3ef9ff63f003b319270" />
</wsse:SecurityTokenReference>
<wsu:Timestamp>
...
</wsu:Timestamp>
</wsse:Security>
</S:Header>
<S:Body>
...
</S:Body>
</S:Envelope>
What I see is a difference between Weblogic and CXF generated
SecurityTokenReference referencing the SAML assertion.
Is this the issue and how could it be resolved? Any suggestions appreciated.
Weblogic:
<wsse:SecurityTokenReference
TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0"
wsu:Id="str_rF7CzO4LdKFt5zs6">
<wsse:Reference URI="#_0x1f0b85b073c1b3ef9ff63f003b319270" />
</wsse:SecurityTokenReference>
CXF:
<wsse:SecurityTokenReference
xmlns:wsse11="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"
wsse11:TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0"
wsu:Id="STR-C4F98A4E3E98FE682A135290662529414">
<wsse:KeyIdentifier
ValueType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLID">_C4F98A4E3E98FE682A135290662529213</wsse:KeyIdentifier>
</wsse:SecurityTokenReference>
--
View this message in context:
http://cxf.547215.n5.nabble.com/Signature-Interop-Issue-Weblogic-Apache-CXF-tp5718487.html
Sent from the cxf-user mailing list archive at Nabble.com.