У меня есть веб-сервис, работающий в IIS, размещенный на сервере Windows 2016 Nano. Я могу получить доступ к услуге нормально, если пройду через http://servername/service/health
Однако, если бы я мог получить к нему доступ через http://[IP Address here]/service/health
или http://service.company.com/service/health
, он запросит учетные данные для входа в AD.
Я просмотрел запись DNS и файл IIS ApplicationHost.config и не могу понять, что с этим не так. Возможно, я пропустил пару настроек. Кто-нибудь может понять, где искать и что делать?
Это похоже на проблему с Kerberos; если я прав, то учетная запись компьютера AD (*) сервера имеет зарегистрированное SPN для HTTP/SERVERNAME
(это можно проверить с помощью SETSPN
инструмент командной строки), поэтому автоматическая проверка подлинности Kerberos может происходить, когда веб-служба вызывается с использованием имени компьютера; однако при вызове веб-службы с любым другим именем это не сработает.
Если вы хотите иметь возможность вызывать веб-службу, используя другое имя, вам необходимо добавить другое SPN к той же учетной записи компьютера AD (*) с помощью такой команды, как SETSPN -S HTTP/service.company.com SERVERNAME
.
Больше информации Вот.
(*) Или учетная запись пользователя, которая запускает пул приложений IIS, если вы настроили его вручную.
Service.company.com должен быть зарегистрированным именем участника службы на сервере IIS.
Кроме того, встроенная проверка подлинности Kerberos по умолчанию не будет работать с IP-адресом, если система не настроена для этого, и IP-адрес не является зарегистрированным именем участника-службы.
https://docs.microsoft.com/en-us/windows-server/security/kerberos/configuring-kerberos-over-ip
Еще одна проверка - возможно, ваш браузер не передает учетные данные, заставляя запрос на вход в систему.
В настройках Интернета есть зона безопасности для локальной интрасети; эта зона будет автоматически передавать ваши учетные данные Windows без необходимости в диалоговом окне AD. Параметр по умолчанию определяет имя сервера как часть вашей сети, но полное доменное имя, вероятно, считается зоной Интернета и не отправляет учетные данные. На странице конфигурации для локальной интрасети вы можете добавить полное доменное имя, которое больше не будет запрашиваться (или установить его с помощью групповой политики).
Все это предполагает, что вы намереваетесь запускать сайт с учетными данными Windows, и вы работаете внутри; Я не эксперт по безопасности, но лично я бы не хотел, чтобы мои учетные данные автоматически отправлялись на сайт в Интернете.