users@jersey.java.net

Re: [Jersey] Jersey Client and Basic Authentication

From: Imran M Yousuf <imran_at_smartitengineering.com>
Date: Mon, 25 Aug 2008 08:55:37 +0600

On Mon, Aug 25, 2008 at 12:41 AM, Mike Jones <mike.a.jones_at_gmail.com> wrote:
> Hi
>
> I've had as quick go at creating a filter for basic authentication. It
> works well for my tests and uses the Base64 encoder provided with
> commons-codec:
>
> <snip>
> public class BasicAuthenticationClientFilter extends ClientFilter {
>
> public BasicAuthenticationClientFilter(final String username,
> final String password) {
> this.username = username;
> this.password = password;
> }
>
> public ClientResponse handle(ClientRequest clientRequest) throws
> ClientHandlerException {
>
> // encode the password
> byte[] encoded = Base64.encodeBase64((username + ":" +
> password).getBytes());
>
> // add the header
> List<Object> headerValue = new ArrayList<Object>();
> headerValue.add("Basic " + new String(encoded));
> clientRequest.getMetadata().put("Authorization", headerValue);
>
> return getNext().handle(clientRequest);
> }
>
> private String username;
> private String password;
> }
> </snip>
>
> I'd like to make it more robust and useful as a contribution to
> jersey. I need some tests for it and was also wondering if it should

It would be nice to have it in Jersey contrib, I hope it is worked on
to get accepted.

> check for the username and the password in the URI:
> http://mike:secret@localhost/ ? Any thoughts?
>

Just for security reasons I would not prefer or suggest it.

Best regards,

Imran

> Cheers
> Mike
>
> 2008/8/20 Mike Jones <mike.a.jones_at_gmail.com>:
>> Hi Marc
>>
>> That worked a treat for the one test I wrote - I think I'll need to
>> call a Authenticator.setDeault(null) on the tearDown to stop specific
>> the credentials going across more than one test.
>>
>> Paul's idea about the Filter is interesting - I suppose using that you
>> can support conventions like http://mike:secret@example.org/
>>
>> Thanks for the help
>>
>> Cheers
>> Mike
>>
>> 2008/8/20 Marc Hadley <Marc.Hadley_at_sun.com>:
>>> Try adding the following to your code before you use the client API:
>>>
>>> final String username ="...";
>>> final String password ="...";
>>> Authenticator.setDefault(new Authenticator() {
>>> protected PasswordAuthentication getPasswordAuthentication() {
>>> return new PasswordAuthentication (username, password.toCharArray());
>>> }
>>> });
>>>
>>> HTH,
>>> Marc.
>>>
>>> On Aug 20, 2008, at 6:45 AM, Mike Jones wrote:
>>>
>>>> Hello
>>>>
>>>> I'm using Jersey with Spring security and I'm in the process of
>>>> creating some tests that use embedded Jetty and the Jersey client. I
>>>> need to perform some basic authentication with the client - do I need
>>>> to encode the credentials in Base64 myself and add them to the headers
>>>> in the jersey client? Am I missing some nice (and probably obvious)
>>>> helper methods for this?
>>>>
>>>> Cheers
>>>> Mike
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>
>>>
>>> ---
>>> Marc Hadley <marc.hadley at sun.com>
>>> CTO Office, Sun Microsystems.
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>
>>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>
>



-- 
Imran M Yousuf
Entrepreneur & Software Engineer
Smart IT Engineering
Dhaka, Bangladesh
Email: imran_at_smartitengineering.com
Blog: http://imyousuf-tech.blogs.smartitengineering.com/
Mobile: +880-1711402557