Dan,

In performing this I was using Java 5, then I had to context switch to something else that required Java 6. In context switching back to this issue, I tried running the same scenario as I described below with Java 6 and now I run into a different issue. When the client tries to connect I get the following error:

java.lang.IllegalStateException: connection not yet open
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getLocalCertificates (AbstractDelegateHttpsURLConnection.java:213) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getLocalCertificates (HttpsURLConnectionImpl.java:167) at org.apache.cxf.ws.security.policy.interceptors.HttpsTokenInterceptorProvider $HttpsTokenOutInterceptor.assertHttps (HttpsTokenInterceptorProvider.java:101) at org.apache.cxf.ws.security.policy.interceptors.HttpsTokenInterceptorProvider $HttpsTokenOutInterceptor.handleMessage (HttpsTokenInterceptorProvider.java:81) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:236)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:472)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:302)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
at org.apache.cxf.frontend.ClientProxy.invokeSync (ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:123)
    at $Proxy37.sayHello(Unknown Source)
at org.cagrid.helloworld.client.SpringClient3.main (SpringClient3.java:69) Invocation failed with the following: java.lang.IllegalStateException: connection not yet open


I should mention that I only get this error if RequireClientCertificate="true", if RequireClientCertificate="false" everything works fine. I still plan on debugging in Java 5 as you suggested but I thought I would mention this because I find it concerning that I see different behaviors between Java 5 and Java 6. I also was hoping that the error I provide above might be familiar to you or ring a bell. BTW, I did switch back to Java 5 and encountered the original problem I posted. Please let me know if you have other suggestions given this additional information. I appreciate you help, thanks in advance.

--Steve

Stephen Langella
Co-Founder
Inventrio, LLC
www.inventrio.com

[email protected]






On Aug 19, 2009, at 4:09 PM, Daniel Kulp wrote:



Hmm... it definitely should be asserted. Is there any way you can run this
in a debugger?   If you could put a break point on line 174 of
HttpsTokenInterceptorProvider, that would be a big help. At that point, I'd like to see the contents of TLSSessionInfo and make sure the certs are correct in there. The other place to breakpoint is line 550 of SSLUtils where the SSL certs and stuff are pulled from the request. If you can check that the correct information is pulled from there, that would also be a big help.

Dan



On Tue August 18 2009 1:06:23 pm Stephen Langella wrote:
I am trying to configure my service to use WS SecurityPolicy for
specifying a transport binding policy for HTTPS.    I have added a
TransportBinding policy to my WSDL and created  a transport binding
policy and binded it to an endpoint policy subject.  At first I
configured the server (through the WS-SecurityPolicy in the WSDL) to
not require the client to provide a certificate.   This worked fine,
second I changed the server to require a client certificate
(<sp:HttpsToken RequireClientCertificate="true"/>).   In testing this
I tried my client without providing a certificate and it still
worked.  This seems to suggest that either the WS-SecurityPolicy is
not being applied or that CXF is not enforcing that a client
certificate be provided.  Any ideas what I might be doing wrong?
Below I have provided my WSDL for reference, thanks in advance.

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="HelloWorld"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
    xmlns:tns="http://www.cagrid.org/HelloWorld";
    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy";
    xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy";

xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecuri
ty-utility-1.0.xsd "
    targetNamespace="http://www.cagrid.org/HelloWorld";>
   <wsdl:types>
<xsd:schema targetNamespace="http://www.cagrid.org/ HelloWorld">
           <xsd:element name="SayHelloRequest" type="xsd:string" />
           <xsd:element name="SayHelloResponse" type="xsd:string" />
       </xsd:schema>
   </wsdl:types>
   <wsdl:message name="SayHelloRequest">
       <wsdl:part element="tns:SayHelloRequest" name="parameters" />
   </wsdl:message>
   <wsdl:message name="SayHelloResponse">
       <wsdl:part element="tns:SayHelloResponse" name="parameters" />
   </wsdl:message>
   <wsdl:portType name="HelloWorld">
       <wsdl:operation name="SayHello">
           <wsdl:input message="tns:SayHelloRequest"
name="sayHelloRequest" />
           <wsdl:output message="tns:SayHelloResponse"
name="sayHelloResponse" />
       </wsdl:operation>
   </wsdl:portType>
   <wsdl:binding name="HelloWorldBinding" type="tns:HelloWorld">
       <wsp:PolicyReference URI="#HelloWorldSecureTransportPolicy"/>
       <soap:binding style="document"
           transport="http://schemas.xmlsoap.org/soap/http"; />
       <wsdl:operation name="SayHello">
           <soap:operation soapAction="" style="document" />
           <wsdl:input name="sayHelloRequest">
               <soap:body use="literal" />
           </wsdl:input>
           <wsdl:output name="sayHelloResponse">
               <soap:body use="literal" />
           </wsdl:output>
       </wsdl:operation>
   </wsdl:binding>
   <wsdl:service name="HelloWorldService">
       <wsdl:port name="HelloWorldPort"
binding="tns:HelloWorldBinding">
           <soap:address location="https://llanowar:9001/HelloWorldService
" />
       </wsdl:port>
   </wsdl:service>

    <wsp:Policy wsu:Id="HelloWorldSecureTransportPolicy">
       <wsp:ExactlyOne>
           <wsp:All>
               <sp:TransportBinding

xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy ">
                   <wsp:Policy>
                       <sp:TransportToken>
                           <wsp:Policy>
                               <sp:HttpsToken
RequireClientCertificate="true" />
                           </wsp:Policy>
                       </sp:TransportToken>
                       <sp:AlgorithmSuite>
                           <wsp:Policy>
                               <sp:Basic256 />
                           </wsp:Policy>
                       </sp:AlgorithmSuite>
                       <sp:Layout>
                           <wsp:Policy>
                               <sp:Lax />
                           </wsp:Policy>
                       </sp:Layout>
                       <sp:IncludeTimestamp />
                   </wsp:Policy>
               </sp:TransportBinding>
               <sp:Wss10
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy ">
                   <wsp:Policy>
                       <sp:MustSupportRefKeyIdentifier />
                       <sp:MustSupportRefIssuerSerial />
                   </wsp:Policy>
               </sp:Wss10>
           </wsp:All>
       </wsp:ExactlyOne>
   </wsp:Policy>
</wsdl:definitions>


--Steve

Stephen Langella
Co-Founder
Inventrio, LLC
www.inventrio.com

[email protected]

--
Daniel Kulp
[email protected]
http://www.dankulp.com/blog

Reply via email to