Есть люди, отвечающие на этот вопрос об аутентификации / безопасности, которые дают совершенно ложную и вводящую в заблуждение информацию, которая потенциально очень опасна.NTLM - это двухфазный процесс.У вас есть согласование между клиентом и веб-сервером, которое получает подробности от клиента, такие как предполагаемое имя пользователя и токен, который зашифрован с помощью хэша пароля пользователя.Многие люди думают, что пока вы можете общаться NTLM с клиентом, каким-то образом произошла аутентификация.Я понятия не имею, почему люди делают это предположение, возможно, потому что процесс рукопожатия NTLM относительно запутан.
Если вы останавливаетесь после первого этапа и не выполняете фактическую аутентификацию, вы доверяете клиенту/ user, в этом случае вы также можете не выполнять какую-либо аутентификацию и просто поместить сообщение «Пожалуйста, не используйте это веб-приложение, если вам не разрешено».
Второй этап - это фактическийаутентификация.Веб-сервер отправляет сведения, предоставленные клиентом (зашифрованный токен) контроллеру домена.Контроллер домена знает хэш пароля пользователя, использованного для шифрования токена, и, таким образом, выполняет такое же шифрование хэша пароля.Если это соответствует значению клиента, то мы знаем, что клиент использовал правильный хэш пароля.Веб-сервер никогда не видит хешированный пароль, он видит только токен, зашифрованный хешированным паролем, в качестве ключа шифрования.
К сожалению, не так много библиотек LDAP, которые поддерживают возможности NETLOGON, необходимые для подлинной аутентификацииТокен NTLM, вероятно, потому, что это нетривиальная фирменная хрень.Samba (ну, на самом деле winbind) - одна из немногих библиотек, которая может это сделать.В настоящее время нет библиотеки Ruby, способной к аутентификации NTLM, хотя есть много библиотек, которые сообщат вам имя пользователя, сообщаемое клиентом, хотя клиент может сообщить любое имя пользователя, которое ему нравится.
Как правило,Большой палец, если ваша библиотека NTLM не запрашивает информацию о вашем контроллере домена, то нет никакой возможности выполнить какую-либо аутентификацию.Многие разработчики этих простых библиотек сами не знают, что делают.