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

Reply via email to