Just out of curiosity - Did you try to use a password digest/hash instead? Using a nonce might be interesting as well (nonce is an effective countermeasure against replay attacks). If you use SoapUI as a WS client you could easily generate most of these WSS header elements for testing purposes.
Cheers Daniel On Sat, Feb 28, 2009 at 9:51 PM, Jonathan Gallimore <[email protected]> wrote: > Yep. Here's the soap request captured by tcpmon: > > POST /CalculatorImpl HTTP/1.1 > Content-Type: text/xml; charset=UTF-8 > SOAPAction: "" > Accept: * > Cache-Control: no-cache > Pragma: no-cache > User-Agent: Java/1.6.0_11 > Host: 127.0.0.1:42040 > Connection: keep-alive > Transfer-Encoding: chunked > > 2ce > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> > <soap:Header> > <wsse:Security xmlns:wsse=" > http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" > soap:mustUnderstand="1"><wsse:UsernameToken xmlns:wsu=" > http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" > wsu:Id="UsernameToken-47889642"><wsse:Username>jane</wsse:Username><wsse:Password > Type=" > http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">waterfall</wsse:Password></wsse:UsernameToken></wsse:Security></soap:Header><soap:Body><ns1:sum > xmlns:ns1="http://superbiz.org/wsdl > "><arg0>4</arg0><arg1>6</arg1></ns1:sum></soap:Body></soap:Envelope> > > Jon > > On Sat, Feb 28, 2009 at 6:42 PM, Daniel S. Haischt < > [email protected]> wrote: > >> Are you using the username token profile ? >> >> On Sat, Feb 28, 2009 at 7:31 PM, Jonathan Gallimore >> <[email protected]> wrote: >> > I spent a bit more time looking at this - and added a bit more code. I >> > noticed that the Jaxb tree for openejb-jar.xml has some webservice >> security >> > attributes that we aren't using, but I think Geronimo is. I've added >> support >> > that does simple username/password authentication using basic http >> > mechanism, and an interceptor to do username/password auth using >> WS-Security >> > headers. >> > >> > I've uploaded a patch to >> > http://people.apache.org/~jgallimore/webservices.diff<http://people.apache.org/%7Ejgallimore/webservices.diff>. > - Show quoted text - >> I be grateful on >> > anyone's thoughts. Its pretty basic at the moment, but I think it would >> be >> > nice if this could go into OpenEJB - if others agree, I'd like to open a >> > JIRA and do some more work on it. >> > >> > I've copied this to the dev@ list too in case anyone who might be >> interested >> > missed it, hope that's ok. >> > >> > Cheers >> > >> > Jon >> > >> > On Fri, Feb 20, 2009 at 1:06 PM, Jonathan Gallimore < >> > [email protected]> wrote: >> > >> >> Hi Jean-Louis, >> >> >> >> Many thanks for your detailed reply and the link to the article. I'll be >> >> having a good look at this over the weekend. I had initially thought >> just >> >> applying basic auth was all there was to it, which is probably a bit >> naive >> >> of me! >> >> >> >> I think it would be worthwhile working out whether there's some samples >> >> (and maybe some enhancements) we could add to OpenEJB in this regard - >> I'm >> >> sure others would find it useful too. >> >> >> >> Cheers, >> >> Jon >> >> >> >> >> >> On Fri, Feb 20, 2009 at 8:49 AM, Jean-Louis MONTEIRO < >> >> [email protected]> wrote: >> >> >> >>> >> >>> Jonathan, >> >>> >> >>> Here are some inputs. >> >>> >> >>> >> >>> Jonathan Gallimore-2 wrote: >> >>> > >> >>> > Obviously I think it would be great if the standalone and embedded >> >>> servers >> >>> > which use their own HTTP listener could accept credentials via basic >> >>> > authentication, meanwhile Tomcat could do the authentication for us >> >>> based >> >>> > on >> >>> > however its been configured (currently it looks like a new >> >>> StandardContext >> >>> > is created for each webservice, and there is code to setup >> >>> authentication, >> >>> > but WsService.authMethod was always null when I debugged it, causing >> no >> >>> > authentication to be applied, and I couldn't see how it could be set >> >>> > otherwise), and the user and role principals could be passed through >> >>> from >> >>> > Tomcat to the relevant EJB container. >> >>> > >> >>> Definitively! (nice to have ;-)). >> >>> Doing basic authentication (without ws-security) seems to be possible >> >>> using >> >>> JAX-WS handlers. >> >>> >> >>> >> >>> Jonathan Gallimore-2 wrote: >> >>> > >> >>> > To give a bit more background on how this has come about - my >> colleague >> >>> at >> >>> > work has been working on some functionality as an EJB, and felt it >> would >> >>> > be >> >>> > nice to have it available as a webservice - and adding the >> @WebService >> >>> > annotation to the EJB seemed to be a nice idea, rather then creating >> a >> >>> > webservice as a separate class that just delegates through to the EJB >> as >> >>> > you >> >>> > describe - >> >>> > >> >>> I was probably not so clear. >> >>> It seems to me, from an architecture point of view, it's better to use >> web >> >>> services as facades. They are personal concerns you know ;-) >> >>> Never mind, I had in mind an EJB Web Service (@stateless + @webservice) >> >>> which delegates to other business EJB and it works fine with OpenEJB >> for >> >>> simple cases. >> >>> >> >>> >> >>> Jonathan Gallimore-2 wrote: >> >>> > >> >>> > and we hoped the container would handle the authentication for >> >>> > us. When configured correctly, JBoss (4.2.2.GA) does seem to do this >> >>> for >> >>> > us, >> >>> > however OpenEJB doesn't at the moment - I don't actually know if this >> is >> >>> > even supposed to work (or even whether its part of any of the JEE >> spec - >> >>> > I'll have to read up!). >> >>> > >> >>> I can't help you on this topic (not read this part of the spec). >> >>> If you have 10 minutes, here is an interesting article >> >>> >> http://www.javaworld.com/javaworld/jw-02-2007/jw-02-handler.html?page=1 >> >>> >> http://www.javaworld.com/javaworld/jw-02-2007/jw-02-handler.html?page=1 >> >>> >> >>> >> >>> Jonathan Gallimore-2 wrote: >> >>> > >> >>> > I think I should probably have a look at WS-Security - I'd be very >> >>> > interested in a seeing a sample using OpenEJB/JAX-WS/WS-Security if >> >>> you're >> >>> > putting one together. >> >>> > >> >>> >> >>> OK, I've done some tests since yesterday morning. But, the way OpenEJB >> >>> publishes EJB as web services does not allow configuring ws-security. >> >>> >> >>> When using CXF + WS-Security, it's quite simple: add a WSS4J >> InInterceptor >> >>> and a WSS4J OutInterceptor giving them a set of properties. >> Interceptors >> >>> can >> >>> be configured using both a Spring application context or CXF >> annotations >> >>> (@InInterceptors @OutInterceptor). >> >>> >> >>> At a JAX-WS point of view we only have handlers (soap handlers and >> logical >> >>> handlers) so I have to spend some more time to look if we can manage >> >>> WS-Security using handlers. >> >>> >> >>> More coming soon ;-) >> >>> >> >>> Kind regards, >> >>> Jean-Louis >> >>> >> >>> >> >>> >> >>> >> >>> -- >> >>> View this message in context: >> >>> http://www.nabble.com/Securing-a-webservice-tp22089576p22116953.html >> >>> Sent from the OpenEJB User mailing list archive at Nabble.com. >> >>> >> >>> >> >> >> > >> >
