[ 
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.

Reply via email to