Ver Mensaje Individual
  #12 (permalink)  
Antiguo 28/04/2009, 22:53
sachablade
 
Fecha de Ingreso: noviembre-2008
Mensajes: 39
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: ¿Como puedo obtener el usuario logueado en Windows?

Tengo lo que buscas. en su día me recorri todo google. lo debes meter en el jsp de entrada porque hace un par de llamadas a si mismo.
Código:
        String username="";
	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];
	    username = new String(msg, offset, length);
	
	    System.out.println("Username:"+username);
	    System.out.println("RemoteHost:"+remoteHost);
	    System.out.println("Domain:"+domain);
	  }
}

Última edición por sachablade; 29/04/2009 a las 04:40 Razón: SOLUCIÓN