This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Web Services and the fly likes How to add the security header in SOAP request? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Web Services
Bookmark "How to add the security header in SOAP request?" Watch "How to add the security header in SOAP request?" New topic
Author

How to add the security header in SOAP request?

Edwin Tailor
Greenhorn

Joined: Aug 09, 2008
Posts: 2
Hi everyone,

I've been trying to search the web for solutions but I can't seem to get the security header <wsse:security> with the username and password to be included in the request (to a 3rd party WSDL). There's no security header defined in the WSDL and I want to avoid modifying the WSDL. I'm using JAX-WS and I've tried the following for the username and password:

HelloService service = new HelloService();
Hello proxy = (service.getHelloPort());
((BindingProvider)proxy).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "userfoo");
((BindingProvider)proxy).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "passbar");

This doesn't seem to do the trick. I've read that Rampart/Axis2 has the ability to add the header. Should I switch to Axis2 or is there another workaround?

Thanks in advance for your input.
Edwin Tailor
Greenhorn

Joined: Aug 09, 2008
Posts: 2
I forgot to mention that there is no security related info defined in the WSDL file.

Thanks
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41124
    
  45
Welcome to JavaRanch.

The username/password thing is for HTTP authentication; what you're looking for is proper WS-Security authentication.

The security info doesn't need to be in the WSDL. It can be kind of bolted onto a WS.

The problem is that there is no standard for adding WS-Security to JAX-WS (or to any other WS API for that matter). That means each WS stack does its own things.
If you were using Axis2/Rampart, I'd point you to an article I wrote about this very topic.
If you're using the Metro stack, the closest to documentation I've seen is this article. Don't worry if you're not using Java 6 - in this context that just means J2SE + JAX-WS + JAXB (which are part of Metro, or can be downloaded separately).

All other tutorials assume you're using NetBeans (and GlassFish). It almost seems as if everybody working for Sun, or wanting to blog on dev.java.net, must agree to push NetBeans as hard as possible. I'm convinced that this hinders the adoption of several Java technologies and APIs, but that's a different topic.
[ August 09, 2008: Message edited by: Ulf Dittmer ]

Ping & DNS - my free Android networking tools app
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
 
subject: How to add the security header in SOAP request?
 
Similar Threads
Adding authorization to access webservice
Eclipse Web Service Client - Username Token Policy
Change address location webservice
JAX-WS Authentication problem -javax.xml.ws.WebServiceException Response: '401: Unauthorized'
JAX-WS - please help convert proxy to BindingProvider for HTTP auth