Как проверить сообщение 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" этой картины?
Спасибо лариллан
2 ответа
Быстрый поиск в сети подтверждает, что все застряли примерно в одной точке.
Лучший ответ на эту тему, который я когда-либо видел, - здесь: Заголовки аутентификации Windows без.NET. Возможный?
Для проверки подлинности учетных данных NTLMv2 необходимо выполнить RPC с шифрованием SecureChannel со службой NETLOGON контроллера домена Active Directory. То есть это трудная вещь. Если ваш сервер поддерживает фильтры сервлетов Java, есть Jespa.
В противном случае существуют модули, которые могут выполнять аутентификацию на уровне веб-сервера, например модуль Apache или путем включения IWA в IIS. Но, конечно, такие решения несколько ограничены.