[
https://issues.apache.org/jira/browse/CXF-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Glen Mazza resolved CXF-3156.
-----------------------------
Resolution: Fixed
Fix Version/s: 2.3.2
Fix made by Colm to WSS4J 1.5.11 which will be in CXF 2.3.2.
> Have web service client cache SAML tokens used in SOAP calls
> ------------------------------------------------------------
>
> Key: CXF-3156
> URL: https://issues.apache.org/jira/browse/CXF-3156
> Project: CXF
> Issue Type: Wish
> Reporter: Glen Mazza
> Assignee: Colm O hEigeartaigh
> Fix For: 2.3.2
>
> Attachments: 20101129DoubleItMetroWSTrust.zip
>
>
> Metro web service providers (and perhaps others) return references to SAML
> Tokens provided by the client during the SOAP call, but do not return the
> tokens themselves (nor is apparent that they should.) Presently Metro
> clients but not CXF clients can process these responses. A CXF client
> attempting to process a Metro response (sample one here[1]) returns this
> error, saying it cannot find the token:
> [INFO] Nov 29, 2010 3:14:33 PM
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromWSDL
> [INFO] INFO: Creating Service
> {http://www.example.org/contract/DoubleIt}DoubleItService from WSDL:
> file:/media/NewDriveExt3/soperawork/DoubleItMetroWSTrust/client-cxf/src/main/resources/DoubleItService.wsdl
> [INFO] Nov 29, 2010 3:14:34 PM
> org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl build
> [INFO] WARNING: No assertion builder for type
> {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}RequireInternalReference
> registered.
> [INFO] Nov 29, 2010 3:14:35 PM
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor handleMessage
> [INFO] WARNING:
> [INFO] org.apache.ws.security.WSSecurityException: Referenced security token
> could not be retrieved (Reference
> "#uuid-88b8189f-9616-48f4-9ea8-ac2b7703baed")
> [INFO] at
> org.apache.ws.security.message.token.SecurityTokenReference.getKeyIdentifierTokenElement(SecurityTokenReference.java:200)
> [INFO] at
> org.apache.ws.security.processor.ReferenceListProcessor.getKeyFromSecurityTokenReference(ReferenceListProcessor.java:356)
> [INFO] at
> org.apache.ws.security.processor.ReferenceListProcessor.decryptDataRefEmbedded(ReferenceListProcessor.java:162)
> [INFO] at
> org.apache.ws.security.processor.ReferenceListProcessor.handleReferenceList(ReferenceListProcessor.java:113)
> [INFO] at
> org.apache.ws.security.processor.ReferenceListProcessor.handleToken(ReferenceListProcessor.java:76)
> [INFO] at
> org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:328)
> [INFO] at
> org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:245)
> [INFO] at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:208)
> [INFO] at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:78)
> [INFO] at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:247)
> [INFO] at
> org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:733)
> [INFO] at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2201)
> [INFO] at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2071)
> [INFO] at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1925)
> [INFO] at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
> [INFO] at
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:662)
> [INFO] at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> [INFO] at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:247)
> [INFO] at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
> [INFO] at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
> [INFO] at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
> [INFO] at
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> [INFO] at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
> [INFO] at $Proxy24.doubleIt(Unknown Source)
> [INFO] at client.WSClient.doubleIt(WSClient.java:17)
> [INFO] at client.WSClient.main(WSClient.java:11)
> [INFO] Nov 29, 2010 3:14:35 PM org.apache.cxf.phase.PhaseInterceptorChain
> doDefaultLogging
> [INFO] WARNING: Interceptor for
> {http://www.example.org/contract/DoubleIt}DoubleItService#{http://www.example.org/contract/DoubleIt}DoubleIt
> has thrown exception, unwinding now
> [INFO] org.apache.cxf.binding.soap.SoapFault: Referenced security token could
> not be retrieved (Reference "#uuid-88b8189f-9616-48f4-9ea8-ac2b7703baed")
> [INFO] at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.createSoapFault(WSS4JInInterceptor.java:597)
> [INFO] at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:268)
> [INFO] at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:78)
> [INFO] at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:247)
> [INFO] at
> org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:733)
> [INFO] at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2201)
> [INFO] at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2071)
> [INFO] at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1925)
> [INFO] at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
> [INFO] at
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:662)
> [INFO] at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> [INFO] at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:247)
> [INFO] at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
> [INFO] at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
> [INFO] at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
> [INFO] at
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> [INFO] at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
> [INFO] at $Proxy24.doubleIt(Unknown Source)
> [INFO] at client.WSClient.doubleIt(WSClient.java:17)
> [INFO] at client.WSClient.main(WSClient.java:11)
> Part of the problem MAY be that Metro prefixes the Assertion key with a "#"
> indicating the token is within the message body. A bug report has been sent
> to them on this issue[2], however I believe CXF would presently fail even if
> the "#" was not there, as the client-side storage/retrieval of SAML tokens is
> not yet in place.
> [1]
> https://issues.apache.org/jira/secure/attachment/12460040/WSS238Results.txt
> [2] http://java.net/jira/browse/WSIT-1490
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.