Windows authentication and local intranet (Помогите новичку)
От: Аноним  
Дата: 13.02.09 14:20
Оценка:
Исходные данные:
1. IIS7.
2. Web Server имеет учетную запись компьютера в домене.
3. Имя машины предположим computer.
4. Виртуальный каталог установлен на вебсайт для которо пробиндено имя webserver.mydomain.local (DNS сервер естественно резолвит это имя).
5. Для витуального каталога запрещаем анонимный доступ и включаем Integrated Windows Authentication.
6. Помещаем в виртуальный каталог test.html.
7. На клиентском кампутере запускаем IE7 под доменным пользователем.

Експеримент:
Заходим по URL http://webserver.mydomain.local/Virtualfolder/test.html
Если добавлен сайт webserver.mydomain.local в локал интранет, то я захожу на страницу без необходимоси ввода креденшелов. Если нет, то необходимо ввести имя и пароль доменного пользователя.

Размышления:
Насколько я понял из MSDN при Windows аутетификации веб сервер предлагает использовать клиенту negotiate протокол, т.е. позволяет клиенту выбрать между Kerberos и NTLM. Если бравзер считает, что веб сервер находится не в локальной сети, то он даже не пытается использовать Kerberos, а сразу аутентифицирует пользователя по NTLM для чего и показывает пользователю диалог для ввода креденшелов.
Сложнее дело обстоит со случаем, когда бравзер считает что сервер в локальной сети (интранете). В этом случае клиент использует Kerberos. Как известно для успешной керберос аутентификации клиенту нужно знать так называемый Target Name в качестве которого можно указать либо SPN либо явно имя пользователя под которым выполняется серверное приложение. Имя этого пользователя бравзер знать ну никак не может. Значит он как-то формирует SPN. Можно предопожить что он (Internet Explorer) формирует его согласно рекомендациям Microsoft Т.е. “HTTP/webserver.mydomain.local”. Но в моей Active Directory такой SPN не закреплен ни за одной учетной записью.

Вопросы:
Можите объяснить почему в моем случае Windows аутентификация вообще работает? И как конкретно на протокольном уровне она происходит?

PS Возможно офтоп, но подходяжего раздела не нашел. А проблема возникла именно при написании ASP.NET приложения.
windows authentication
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.