У меня есть приложение, которое годами работает под IIS на сервере Server 2012. В последнее время кажется, что проверка подлинности перестала работать, и я не знаю почему.
Сайт настроен на использование Windows проверки подлинности, и я обращаюсь к нему с тем же кодом PowerShell, который я всегда использовал. Обычно этот код:
$RequestUrl = 'https://app.site.com/dir'
$DomainCredential = Get-Credential
Invoke-RestMethod -Uri $RequestUrl -Credential $DomainCredential
Должен привести к этому в журнале IIS:
# Поля: дата время s-ip cs-method cs-uri-stem cs- uri-query s-port cs-username c -ip cs (User-Agent) cs (Referer) s c -status s c -substatus s c -win32-status затраченное время
2020-07-07 16:48:58 GET stem> 443 - Mozilla / 5.0 + (Windows + NT; + Windows + NT + 10.0; + en-US) + WindowsPowerShell / 5.1. 18362.752 - 401 2 5 0
2020-07-07 16:48:59 ПОЛУЧИТЬ 443 Mozilla / 5.0 + (Windows + NT; + Windows + NT + 10.0; + en-US ) + WindowsPowerShell / 5.1.18362.752 - 200 0 0 999
Однако теперь (опять же, без каких-либо изменений кода) в журнале IIS отображается:
# Поля: дата время s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c -ip cs (User-Agent) cs (Referer) s c -status s c - substatus s c -win32-status time-time
2020-07-08 19:33:23 GET 443 - Mozilla / 5.0 + (Windows + NT; + Windows + NT +10.0; + en-US) + WindowsPowerShell / 5.1.18362.7 52-401 2 5 0
2020-07-08 19:33:28 GET 443 - Mozilla / 5.0 + (Windows + NT; + Windows + NT + 10.0; + en- US) + WindowsPowerShell / 5.1.18362.752 - 401 1 3221225581 5046
, и ответ будет «401 Unathorized». Похоже, PowerShell не передает учетные данные.
Я подтвердил, что получаю заголовок WWW-Authenticate. Я на всякий случай перезагрузил сервер, но это не помогло. Я также на мгновение включил просмотр каталогов и смог пройти аутентификацию в моем браузере и просмотреть файлы. Наконец, я поработал с разработчиком приложения, и он подтвердил, что мой запрос не проходит, я застрял в IIS.
Что дает?