Поиск по методам и протоколам проверки подлинности Windows, я решил понять точную разницу между Negotiate, Kerberos и NTLM, используемой в простом исполняемом файле, прежде чем полюбить его с помощью IIS и веб-аутентификации.Аутентификация исполняемого файла Windows
Я достиг хороших результатов, НО мне все еще нужно больше информации о переговорах и Kerberos.
Я следующий сценарий:
Я создал очень простой # окно C образует приложение, которое показывает окно сообщения отображается значение:
System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType
Обратите внимание, что я являюсь пользователем домена с администратором привилегии на моей локальной машине, у меня следующие результаты:
Когда я запустить исполняемый файл (двойной щелчок), пока я буду активно подключен к DC, я получил " Согласование».
Когда я запускаю exe-файл (запускаюсь как пользователь differnet/используя локального пользователя), в то время как я активно подключен к DC, я получил «NTLM».
Когда я запускаю exe-файл, используя «Запуск от имени администратора» или «Запуск от имени пользователя», я получил «Kerberos».
Когда я запускаю exe-файл, пока я локально зарегистрирован в локальной учетной записи, я получил «NTLM».
Я понимаю, что LSA будет использовать NTLM для локальных учетных записей. Также я понимаю, что Active Directory использует Kerberos для аутентификации пользователей домена и компьютеров.
Мой вопрос: почему я получаю Согласование Тип аутентификации, когда я запускаю exe, используя мою учетную запись, либо посредством (Double Click), либо «запускается как другой пользователь», используя мою ту же учетную запись?
Обновления: Я заметил следующее:
- Если локального пользователь работает ех то NTLM
- Если пользователь домена запустить ехе, то он Обсудите (Если этот пользователь является локальным администратором), но есть Kerberos (если этот пользователь не является локальным администратором)
- Если домен admin запустить exe, то это Kerberos
Я просто разъяснение об этом поведении.
вопрос остается неясным. Пакет проверки подлинности, используемый для аутентификации пользователя, отличается от протокола, используемого для аутентификации пользователя, и каждый из них отличается от объекта, который выполняет аутентификацию. Не существует взаимно однозначной (взаимной) взаимосвязи. NTLM и Kerberos (и Negotiate) актуальны только при аутентификации на удаленном компьютере. Аутентификация на удаленном компьютере в не-доменной среде будет использовать NTLM, а аутентификация на удаленном компьютере в домене будет использовать либо Kerberos, либо NTLM. Что именно вы пытаетесь выяснить? – conio
Это неправда. Локальный компьютер также использует пакет проверки подлинности для аутентификации учетных данных входа, собранных Winlogon через GINA. Winlogon вызывает LsaLogonUser, который использует пакет проверки подлинности для создания сеанса входа в систему. LSA использует NTLM (Msv1_0.dll) для поиска учетной записи на локальном компьютере SAM в случае локального входа в систему; не требуется удаленный компьютер. – codekaizen
Вы даже не близко. Тот факт, что некоторые страницы (например, связанные с вашим ответом) неправильно описывают MSV1_0 как «NTLM», не означает, что используется протокол NTLM ** - тот, который описан в [MS-NLMP]. (Правильное описание - [Microsoft Authentication] (http://i.stack.imgur.com/k6rdD.png) [Package v1.0] (http://i.stack.imgur.com/313Y3.png), кстати.) Я не знаю, как я могу быть более ясным в этом вопросе. Когда вы выполняете аутентификацию против локального SAM, никто не создает проблему, и никто не создает ответ на этот вызов, основанный на хэшах LM или NT пароля. – conio