views:

669

answers:

2

I have a WCF service that uses X.509 certificates for authentication. What's the best method of creating a Java client that can use that service? I've heard of Axis, CXF, Tango, and WSS4J, but I'm not sure which supports X.509 and which one is a good way of working with WCF.

+2  A: 

I would guess Apache Axis2 or Sun's Metro. Both support WS-Security out of the box. There may be details you might have to tweak to get them talking though. See Yaron Naveh's Web Services 2.0 Blog.

eed3si9n
+1  A: 

Do you need to support ws-security markings in the envelope? Or does the ssl connection itself rely on client certificate authentication? (I would have added this as a comment rather than an answer, but I don't have the necessary 50 reputation.)

stinkymatt
Either way I guess, just as long as the WCF service is accessible by only the Java client and nothing else. My major goals are restricting access and interoperability between .NET and Java.Although, I'd like to learn the WS-Security way so I can take advantage of message-level security if I need it.
Zarjay
Is there an unencrypted version of the WCF service that you can develop against? It is a little easier to get the encryption sorted out if you know you have a client that works without encryption. I would suggest that your next step is to download Axis2 and run wsdl2java against the wsdl to generate the stubs. If the WCF service does require a client cert just to see the wsdl, you may have to load the cert into a browser, download the wsdl through that and run wsdl2java against the locally stored file. You can do client cert handshakes through Axis2, but it can be tricky if new to the tool
stinkymatt