Как проверить сообщение NTLM type3? (Node.js)

Я хочу написать http-сервер с node.js, который поддерживает аутентификацию NTLMv2.

Все работает нормально с рукопожатием (сообщения типа 1, типа 2, типа 3), и я получаю свое сообщение типа 3 от клиента (браузер Chrome). В этом сообщении, которое отправляется на сервер, есть ответ ntlmv2, который я могу прочитать на моем сервере node.js. Как я могу подтвердить подлинность этого ответа?

Согласно [1] я понял сообщение type3 и смог создать собственную подпрограмму node.js для генерации этих хешей. Поэтому, когда у меня есть пароль, я могу создать хеш, равный тому, который я получаю из браузера. Но как я могу аутентифицировать этот хэш / ответ, не зная пароля? Как я могу аутентифицировать это с помощью DomainController/ActiveDirectory в моей сети?

Если вы посмотрите [2], то есть картинка, которая отлично описывает мой вопрос. Как я могу выполнить шаги "4" и "5" этой картины?

Спасибо лариллан

[1] http://davenport.sourceforge.net/ntlm.html

[2] http://msdn.microsoft.com/en-us/library/cc239685.aspx

2 ответа

Быстрый поиск в сети подтверждает, что все застряли примерно в одной точке.

Лучший ответ на эту тему, который я когда-либо видел, - здесь: Заголовки аутентификации Windows без.NET. Возможный?

Для проверки подлинности учетных данных NTLMv2 необходимо выполнить RPC с шифрованием SecureChannel со службой NETLOGON контроллера домена Active Directory. То есть это трудная вещь. Если ваш сервер поддерживает фильтры сервлетов Java, есть Jespa.

В противном случае существуют модули, которые могут выполнять аутентификацию на уровне веб-сервера, например модуль Apache или путем включения IWA в IIS. Но, конечно, такие решения несколько ограничены.

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