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));
        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];
        String username = new String(msg, offset, length);

        System.out.println( "Username:"+username.replace(username.substring(1, 2), ""));
        System.out.println( "RemoteHost:"+remoteHost.replace(remoteHost.substring(1, 2), ""));
        System.out.println( "Domain:"+domain.replace(domain.substring(1, 2), ""));
    }
}