1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| // On traite le Header de la requette pour récupérer le login Windows
String auth = request.getHeader("Authorization");
// La session Windows n'est pas renseigné alors on demande une connexion
if (auth == null) {
reponse.setStatus(reponse.SC_UNAUTHORIZED);
reponse.setHeader("WWW-Authenticate", "NTLM");
return false;
}
if (auth.startsWith("NTLM ")) { // Si elle commence par NTML c'est qu'une session Windows est renseigné
byte[] msg =
new sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5));
int off = 0, length, offset;
String s;
if (msg[8] == 1) {
off = 18;
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};
//
reponse.setStatus(reponse.SC_UNAUTHORIZED);
reponse.setHeader("WWW-Authenticate", "NTLM "
+ new sun.misc.BASE64Encoder().encodeBuffer(msg1).trim());
return false;
}
else if (msg[8] == 3) {
Type3Message type3 = new Type3Message(msg);
String username= type3.getUser();
String domain=type3.getDomain();
}
} |
Partager