I was asked to post a JIRA issue for this with the Mule Restlet Transport http://www.mulesource.org/jira/browse/RESTLET-9
________________________________ From: John Prystash <[email protected]> To: [email protected] Sent: Tuesday, January 27, 2009 8:54:08 PM Subject: Re: [restlet-user] Retrieving Credentials sent by HttpClient Thanks for taking a look Jerome. I've sent an email over to the Mule User list. I got help with the Mule Restlet transport on this list before so I thought this might of been the place to try again. I'll be sure to post back when this is all resolved :) Here's a link to the Markmail entry for the email: http://markmail.org/search/?q=prystash+mule-user+credentials#query:prystash%20mule-user%20credentials+page:1+mid:ex4joce6pu3yih2i+state:results ________________________________ From: Jerome Louvel <[email protected]> To: [email protected] Sent: Tuesday, January 27, 2009 4:45:29 PM Subject: RE: [restlet-user] Retrieving Credentials sent by HttpClient Hi John, I'm puzzled as well. If the header is present it should work. It sounds like it is an issue with the way Mule is integrated with Restlet. Have you tried contacting the Mule mailing list? Best regards, Jerome Louvel -- Restlet ~ Founder and Lead developer ~ http://www.restlet.org Noelios Technologies ~ Co-founder ~ http://www.noelios.com ________________________________ De : John Prystash [mailto:[email protected]] Envoyé : lundi 26 janvier 2009 23:33 À : [email protected] Objet : Re: [restlet-user] Retrieving Credentials sent by HttpClient I do see an Authorization header: DEBUG - org.restlet.http.headers:[Accept: */*, Authorization: Basic aGFyYm9yOmhhcmJvcg==, Host: localhost:28080, User-Agent: Noelios-Restlet-Engine/1..1..1] ________________________________ From: John Prystash <[email protected]> To: [email protected] Sent: Monday, January 26, 2009 5:12:54 PM Subject: Re: [restlet-user] Retrieving Credentials sent by HttpClient To follow-up some more... I tried using the Restlet Client code provided by the example in the tutorial (http://www.restlet.org/documentation/1.1/tutorial#part09) and went back to using my Guard extension. In short, the ChallengeResponse() appears to always be null when coming through the Mule Restlet Transport (unless of course I'm missing something). @Override public int authenticate(Request request) { ChallengeResponse cr = request.getChallengeResponse(); if (cr == null) { logger.debug("ChallengeResponse is NULL"); } ... } Iterating through getSecrets() above gives me the Secrets I set up in my Application class. Also, getScheme() returns HTTP_BASIC. Could I possibly be missing a step that invokes the ChallengeResponse from the client? My relevant client code: Client client = new Client(Protocol.HTTP) Request request = new Request(Method.GET, uri) ChallengeScheme scheme = ChallengeScheme.HTTP_BASIC ChallengeResponse authentication = new ChallengeResponse(scheme, username, password) request.setChallengeResponse(authentication) Response response = client.handle(request) Sorry to keep pinging here, but I'm running out of ideas :) ________________________________ From: John Prystash <[email protected]> To: [email protected] Sent: Monday, January 26, 2009 10:47:01 AM Subject: Re: [restlet-user] Retrieving Credentials sent by HttpClient To follow-up, I tried following the example found in the tutorial and let the standard Guard class handle the authentication (http://www.restlet.org/documentation/1.1/tutorial#part09). In my Application extension: Guard guard = new Guard(getContext(), ChallengeScheme.HTTP_BASIC, REALM); guard.getSecrets().put("john", "john".toCharArray()); guard.setNext(MyResource.class); In my client, I set the credentials as before: def credentials = new UsernamePasswordCredentials("john", "john") And I get a 401. So with this simpler approach where Guard.authenticate() is being invoked, the credentials from HttpClient do not seem to get noticed: Credentials: Username: harbor Password: harbor Response received. Status: 401 Response Body: <html> <head> <title>Status page</title> </head> <body> <h3>The request requires user authentication</h3><p>You can get technical details <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">here</a>.<br> Please continue your visit at our <a href="/">home page</a>. </p> </body> </html> ________________________________ From: John Prystash <[email protected]> To: [email protected] Sent: Sunday, January 25, 2009 5:40:06 PM Subject: [restlet-user] Retrieving Credentials sent by HttpClient Hi, I'm trying to retrieve the credentials set in by HttpClient in my Restlet service. I'm using Mule 2.0.2 with 1.1.3 of the Mule Restlet Transport (uses Restlet 1.1.1). In my Guard class, request.getChallengeResponse() is return null. My Guard extension: public class MyGuard extends Guard { @Override public int authenticate(Request request) { ... ChallengeResponse cr = request.getChallengeResponse(); // is null here ... } } My Application class: public class MyApplication extends Application { @Override public Restlet createRoot() { Guard guard = new MyGuard(getContext(), ChallengeScheme.HTTP_BASIC, "someRealm"); guard.setNext(MyResource.class); ... } } I'm using HttpClient 3.1 (with Groovy) as my users will be: def client = new HttpClient() def httpMethod = new GetMethod(uri) def authScope = new AuthScope(null, -1, "someRealm") def credentials = new UsernamePasswordCredentials(username, password) client.getState().setCredentials(authScope, credentials); // these lines print out what I expect println "Username: " + client.getState().getCredentials(authScope).getUserName() println "Password: " + client.getState().getCredentials(authScope).getPassword() httpMethod.setDoAuthentication(true) statusCode = client.executeMethod(httpMethod); I found a similar posting here: http://markmail.org/message/6n7hjc3pmbg7vcg5#query:restlet%20httpclient%20credentials+page:1+mid:5y3ldjbvcvwxaysp+state:results Thanks for advance for any insight. ------------------------------------------------------ http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1063895

