I need to find a way to go into tomcat programmatically and bypassing the
form based authentication.

 

I turned on form based authenticated by adding  security-constraint in
web.xml. As a result of that, I need to type in admin, admin as user name
and password to assess a page called hello.jsp. The way the form based works
is that it uses j_security_check by passing user name and password using
NameValuePair. I can log in ok manually.

 

Here's the error when I used httpclient.jar:

 

The time allowed for the login process has been exceeded. If you wish to
continue you must either click back twice and re-click the link you
requested or close and re-open your browser</u></p><p><b>description</b>
<u>The client did not produce a request within the time that the server was
prepared to

wait (The time allowed for the login process has been exceeded. If you wish
to continue you must either click back twice and re-click the link you
requested or

close and re-open your browser). 

 

 

I've turned on debugging. Somehow the the AuthenticatorBase or
FormAuthenticator authenticates different from the httpclient.jar than my
browser.

 

 

Thanks for Any Help,

 

Derek

 

 

 

Below is the code using httpclient.jar:

 

 

 

 

import org.apache.commons.httpclient.*; 

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

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

import org.apache.commons.httpclient.cookie.CookiePolicy;

import org.apache.commons.httpclient.cookie.CookieSpec;

import org.apache.commons.httpclient.params.HttpMethodParams; 

import java.io.*; 

public class DoForm { 

 

 

static{ 

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.comm
ons.httpclient", "debug"); 

}

 

 

 

    //private static String url = "http://128.18.245.102:14035";; 

    //    private static String
url1="http://128.18.245.102:14035/kw-saf-admin";;

 

    static final String LOGON_SITE = "localhost";

    static final int    LOGON_PORT = 8080;

    static final String    LOGON_EXT="self-login";

    private static String
url1="http://"+LOGON_SITE+":"+LOGON_PORT+"/"+LOGON_EXT;    

public static void main(String[] args) { 

// Create an instance of HttpClient. 

HttpClient client = new HttpClient(); 

// Create a method instance. 

PostMethod method = new PostMethod(url1+"/j_security_check"); 

//GetMethod method = new GetMethod(url1+"/j_security_check"); 

 

NameValuePair [] data = { new NameValuePair("j_username", "admin"),

                          new NameValuePair("j_password", "admin"),

                          new NameValuePair("action", "j_security_check"),

                                      new NameValuePair("url", "login.jsp")
};

 

method.setRequestBody(data);

 

 

 

 

try {

 // Execute the method. 

int statusCode = client.executeMethod(method); 

if (statusCode != HttpStatus.SC_OK) { 

System.err.println("Method failed: " + method.getStatusLine()); 

} // Read the response body. 

System.out.println("Login form post: " + method.getStatusLine().toString());

// release any connection resources used by the method

byte[] responseBody = method.getResponseBody(); 

method.releaseConnection();

// See if we got any cookies

// The only way of telling whether logon succeeded is 

// by finding a session cookie

CookieSpec cookiespec = CookiePolicy.getDefaultSpec();

Cookie[] logoncookies = cookiespec.match(

       LOGON_SITE, LOGON_PORT, LOGON_EXT, false, 

       client.getState().getCookies());

     System.out.println("Logon cookies:"); 

        if (logoncookies.length == 0) {

                System.out.println("None"); 

        } else {

                for (int i = 0; i < logoncookies.length; i++) {

                        System.out.println("- " + 

logoncookies[i].toString()); 

                        }

            }

 

// Deal with the response. 

// Use caution: ensure correct character encoding and is not binary data 

System.out.println(new String(responseBody)); 

 

} catch (HttpException e) {

 System.err.println("Fatal protocol violation: " + e.getMessage()); 

e.printStackTrace();

 } catch (IOException e) {

 System.err.println("Fatal transport error: " + e.getMessage());

 e.printStackTrace();

 } finally { // Release the connection. method.releaseConnection(); 

 } 

} 

}

Reply via email to