What do you mean by "eliminating the authentication overhead"? Does this
mean keeping the already Authenticated header and adding it next time
the URL is being invoked? I am using Apache Tomcat Server to host a
couple of protected URLs. One more Basic and other for Digest. I believe
it does the necessary connection management specified by the HTTP
1.0/1.1. For logging I execute the following before I do anything.
log4j-1.2.8 and commons-logging-1.0.2. I do not any other documentation
for logging. If you have a sample code which enables logging even to a
file, please send that to me. I am using JDK1.4  on Sun Solaris without
any container to run the client. So I do not think it is redirecting
stdout or stderr to somewhere else.

System.setProperty("org.apache.commons.logging.simplelog.defaultlog",
"debug"); 
System.setProperty("org.apache.commons.logging.Log",
"org.apache.commons.logging.impl.SimpleLog"); 
System.setProperty("org.apache.commons.logging.simplelog.showdatetime",
"true"); 
System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire",
"debug"); 
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient",
"trace"); 


>>> [EMAIL PROTECTED] 6/10/2003 1:36:57 PM >>>
Zulfi,
Only Basic authentication scheme can be used preemptively. If you want
to eliminate the authentication overhead associated with Digest or NTLM
schemes you have to ensure that the HTTP server keeps connections alive
when possible.

Please get logging to work. That should not be too difficult. Please
note that application servers and servlet engines usually redirect
standard output and standard error. If you are unable to figure out what
is going you might want to use Log4j toolkit that allows greater control
over logging (for instance, you can specify a separate log file for a
specific category of events). We will not be able to help you unless we
can see the logs. 

Oleg

-----Original Message-----
From: Zulfi Umrani [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, June 10, 2003 16:27
To: [EMAIL PROTECTED] 
Subject: RE: preemptive


By setting realm as null, the pre-emptive authentication worked! But,
it
sends a Basic Authorization header even if the URL is protected by
Digest! For Digest it is still making 2 trips in order to
authenticate.
Which is fine for the first request, but it repeats the same thing for
the second request as well. Is there a way to tell the state, method
or
client what kind of scheme is desired for pre-emptive authentication.
Sorry, no logs here as log did not work.

>>> [EMAIL PROTECTED] 6/10/2003 3:47:32 AM >>>
Zulfi,

Try setting both realm & host to null. That should do the trick

        HttpClient hc = new HttpClient();
        HttpState state = hc.getState();
        state.setAuthenticationPreemptive(true);
      // Set default credentials (realm & host are null)
        state.setCredentials(null, null, 
            new UsernamePasswordCredentials("zulfi", "zulfi"));


Folks,

The present convention for setting a default set of credentials is
utterly confusing and needs to be redesigned in 2.1. I believe we
should
be using HttpState#setCredentials(HttpAuthRealm, Credentials) instead
of
HttpState#setCredentials(String, String, Credentials). We should also
provide a static final class to represent the default set of
credentials:

public static final HttpAuthRealm DEFAULT_AUTH_CREDENTIALS = new
HttpAuthRealm(null, null);

The end user code might look similar to that below

        state.setCredentials(DEFAULT_AUTH_CREDENTIALS, 
            new UsernamePasswordCredentials("zulfi", "zulfi"));


Cheers

Oleg


-----Original Message-----
From: Zulfi Umrani [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, June 10, 2003 00:44
To: [EMAIL PROTECTED] 
Subject: preemptive


Tried to use the Preemptive Authentication feature. Could not get it
to
work. I used the HttpState.setAuthenticationPreemptive(true); to set
the
preemptive authentication ON. It still send the first request without
the Authorization header. Code sample is below. Would like to know,
how
to set up the Pre-emptive Authentication.

package test;

import java.io.*;
import java.net.URL;

import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.auth.*;
import org.apache.commons.httpclient.util.*;

public class JCTest {
    public static void main(String[] args) throws Exception {
        test0();
        test0();
        return;
    }

    public static void test0() throws Exception {
        System.out.println("running test0");

        String urlstr = "http://localhost:9999/services1/test";;
        URL url = new URL(urlstr);
        
        HttpClient hc = new HttpClient();
        HttpState state = hc.getState();
        state.setAuthenticationPreemptive(true);
        state.setCredentials("", url.getHost(), 
            new UsernamePasswordCredentials("zulfi", "zulfi"));

        PostMethod post = new PostMethod(urlstr);
        post.setDoAuthentication(true);

        post.addRequestHeader("Connection", "Keep-Alive");
        post.addRequestHeader("Content-Length", ""+msg.length());
        post.addRequestHeader("Content-Type", "text/xml;
charset=utf-8");

        InputStream reqis = new ByteArrayInputStream(msg.getBytes());
        
        post.setRequestBody(reqis);

        HostConfiguration hconfig = new HostConfiguration();
        hconfig.setHost(new URI(urlstr));
        
        hc.executeMethod(hconfig, post);

        System.out.println(post.getResponseBodyAsString());
        System.out.println();
            
    }
    
    private static String msg = "Text Message";

}


Thanks.

---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED] 
For additional commands, e-mail:
[EMAIL PROTECTED] 


---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED] 
For additional commands, e-mail:
[EMAIL PROTECTED] 


---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED] 
For additional commands, e-mail:
[EMAIL PROTECTED] 


---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED] 
For additional commands, e-mail:
[EMAIL PROTECTED] 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to