У меня есть веб-служба, работающая в IIS 6.0 в Windows 2003. Ее режим аутентификации — встроенная безопасность Windows (анонимность отключена), а авторизация выполняется с помощью диспетчера авторизации и хранилища авторизации XML. Мой тестовый пользователь является пользователем домена (фактически администратором) с авторизованной ролью.
Я тестирую это (на данный момент) на веб-сервере (localhost) и использую (на данный момент) Internet Explorer для доступа к веб-службе (.asmx).
Я могу успешно открыть страницу веб-службы (wsdl) через локальный хост, например:
http://localhost:8080/MyService/MyService.asmx
При использовании этого URL-адреса интегрированная проверка подлинности Windows проходит успешно (в автоматическом режиме), и AzMan успешно авторизует меня для доступа к службе. То же самое касается имени сервера:
http://myserver:8080/MyService/MyService.asmx
Теперь мне нужно использовать внешнее имя хоста (www.mysite.no) для доступа к сервису (чтобы заставить ssl работать с сертификатом, выданным для этого имени сайта). Для этого я добавляю имя хоста в свой файл HOSTS, например:
127.0.0.1 www.mysite.no
... затем введите это в IE:
http://www.mysite.no:8080/MyService/MyService.asmx
Что происходит тогда, так это то, что авторизация не удалась. Я получаю окно входа в IE/Windows и трижды ввожу свои правильные учетные данные. Затем я получаю 401.1:
HTTP Error 401.1 - Unauthorized: Access is denied due to invalid credentials.
Internet Information Services (IIS)
Как на авторизацию через AzMan влияет имя хоста?
Редактировать: у меня есть основания полагать, что AzMan не имеет к этому никакого отношения — похоже, что аутентификация не удалась.
Воспроизвел проблему на другом сервере. Суть, по-видимому, в том, что доступ к localhost через запись в файле локального хоста каким-то образом нарушает встроенную аутентификацию Windows между браузером и IIS.
Я работал над проблемой, теперь все, что осталось от моего любопытства...