Hi Marc,
Thanks for your reply. The reason I'm using a redirect is because the first page gets the user's NT login name and passes this onto the next as a session variable. I found this code on the web!
package ntlm;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
public class UserAuthentication extends HttpServlet
{
public static
String getUserName(HttpServletRequest request,
HttpServletResponse response)
{
String user="";
try
{
String auth=request.getHeader("Authorization");
if (auth==null)
{
response.setStatus(response.SC_UNAUTHORIZED);
response.setHeader("WWW-Authenticate", "NTLM");
response.flushBuffer();
return "";
}
if (auth.startsWith("NTLM "))
{
byte[] msg = new sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5));
int off = 0, length, offset;
if (msg[8] == 1)
{
byte z = 0;
byte[] msg1 = {(byte)'N', (byte)'T', (byte)'L', (byte)'M',(byte)'S', (byte)'S', (byte)'P',
z,(byte)2, z, z, z, z, z, z, z,(byte)40, z, z, z,
(byte)1, (byte)130, z, z,z, (byte)2, (byte)2,
(byte)2, z, z, z, z, z, z, z, z, z, z, z, z};
response.setHeader("WWW-Authenticate", "NTLM " + new sun.misc.BASE64Encoder().encodeBuffer(msg1).trim());
response.sendError(response.SC_UNAUTHORIZED);
return "";
}
else if (msg[8] == 3)
{
off = 30;
length = msg[off+17]*256 + msg[off+16];
offset = msg[off+19]*256 + msg[off+18];
String remoteHost = new String(msg, offset, length);
length = msg[off+1]*256 + msg[off];
offset = msg[off+3]*256 + msg[off+2];
String domain = new String(msg, offset, length);
length = msg[off+9]*256 + msg[off+8];
offset = msg[off+11]*256 + msg[off+10];
user = new String(msg, offset, length);
}
}
}
catch(IOException e)
{
e.printStackTrace();
}
finally
{
return user;
}
}
}
The username session variable is being populated alright but possibly is interfering with struts' sessions when it calls a response.flushBuffer()?
Regards,
Barry