NTLM аутентификация с Windows 10 и IE11 браузером

У меня есть веб-приложение (J2EE), и следующий код проверяет пользователя (из AD) и получает имя пользователя:

public void getUser(HttpServletRequest request, HttpServletResponse response, String methodGetPost) throws IOException {            
try {
    String auth = request.getHeader("Authorization");       
    if (auth == null) {
        response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
        response.setHeader("WWW-Authenticate", "NTLM");
        return;
    } else if (auth.startsWith("NTLM ")) {          
        byte[] msg = new sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5));
        int off = 0, length, offset;

        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 };
            response.setHeader("WWW-Authenticate",
                    "NTLM " 
                    + new sun.misc.BASE64Encoder().encodeBuffer(msg1).trim());

            response.sendError(HttpServletResponse.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 = "";
            try {
                remoteHost = clear(new String(msg, offset, length));
            }catch(Exception e){
                logger.logError("DefaultApps.getUser: error al recuperar el remoteHost");
            }   

            length = msg[off + 1] * 256 + msg[off];
            offset = msg[off + 3] * 256 + msg[off + 2];

            String domain = "";

            try{
                domain = clear(new String(msg, offset, length));
            }catch(Exception e){
                logger.logError("DefaultApps.getUser: error al recuperar el domain");
            }

            length = msg[off + 9] * 256 + msg[off + 8];
            offset = msg[off + 11] * 256 + msg[off + 10];
            String username = clear(new String(msg, offset, length));
        }
    }           
} catch (Exception e) {
    response.sendRedirect("/pages/jsp/login/Login.jsp");        
    return;         
}

}

Этот код корректно работает с этим клиентом: windows 7 && ie11, но с windows 10 && ie11 я не могу получить тип сообщения 3.

Не могли бы вы помочь мне?

Спасибо!

0 ответов

Другие вопросы по тегам