Как устранить неполадки проблем встроенной аутентификации для ядра 2.1 asp.net
Как устранить неполадки проблем встроенной аутентификации для ядра 2.1 asp.net
Запросы страниц к моему приложению asp.net core 2.1.x, опубликованные в IIS с использованием публикации Visual Studio 2017, возвращают ошибку HTTP 401.2 - неавторизовано. Приложение IIS Server настроено на использование только встроенной аутентификации. Фрагмент окна диспетчера IIS
В этом фрагменте веб-сайт по умолчанию /OrderTrackingService - это приложение, созданное и настроенное с помощью отладки Visual Studio. Dev.Portal / ordertracking - это то же приложение, которое опубликовано в профиле публикации Visual Studio.
Насколько я могу судить, конфигурация веб-приложения в IIS идентична. Когда я запускаю приложение под отладчиком, при использовании IIS или IIS Express входящие запросы имеют заголовок авторизации
No Proxy-Authorization Header is present.
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
60 81 84 06 06 2B 06 01 05 05 02 A0 7A 30 78 A0 `..+..... z0x
30 30 2E 06 0A 2B 06 01 04 01 82 37 02 02 0A 06 00...+....7....
09 2A 86 48 82 F7 12 01 02 02 06 09 2A 86 48 86 .*H÷......*H
F7 12 01 02 02 06 0A 2B 06 01 04 01 82 37 02 02 ÷......+....7..
...
Когда я запускаю приложение из IIS Direct (в соответствии с настройками публикации и IIS), входящие запросы не имеют заголовка авторизации
No Authorization Header is present.
Может кто-нибудь сказать мне, как я могу определить, почему заголовки присутствуют в одном случае и отсутствуют в другом случае?
ОБНОВЛЕНИЕ: у меня есть некоторая дополнительная информация, которая может помочь с поиском проблемы. Когда запросы к веб-приложению, настроенному с помощью визуальной отладки в студии, передаются в IIS, возникает серия HTTP-запросов / ответов, в которых предоставляется заголовок auth и устанавливается личность пользователя.
- ОТВЕТ НА ЗАПРОС
GET http://.../ordertrackingservice HTTP/1.1
Host: ...
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: .AspNet.Consent=yes
HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Date: Tue, 02 Oct 2018 16:32:36 GMT
Content-Length: 6138
Proxy-Support: Session-Based-Authentication
** - ЗАПРОС / ОТВЕТ**
GET http://.../ordertrackingservice HTTP/1.1
Host: ...
Connection: keep-alive
Cache-Control: max-age=0
Авторизация: Переговоры YIGEBgYrB....
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: .AspNet.Consent=yes
HTTP/1.1 401 Unauthorized
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
WWW-Аутентификация: ведение переговоров oYIBUTCCAU2gAwoBAaEMBgorBgE...
Date: Tue, 02 Oct 2018 16:32:36 GMT
Content-Length: 341
Proxy-Support: Session-Based-Authentication
** - ЗАПРОС / ОТВЕТ**
GET http://.../ordertrackingservice HTTP/1.1
Host: ...
Connection: keep-alive
Cache-Control: max-age=0
Authorization: Negotiate oXcwdaADCgEBoloEWE5UTE1TU1...
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: .AspNet.Consent=yes
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
Server: Kestrel
Persistent-Auth: true
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate oRswGaADCgEAoxIEEAEAAAAVmumr4Z49ZwAAAAA=
Date: Tue, 02 Oct 2018 16:32:36 GMT
Content-Length: 6884
Когда запросы поступают на веб-сайт, созданный средством публикации Visual Studio, это согласование не происходит. Есть один запрос / ответ
GET http://...:8081/ordertracking HTTP/1.1
Host: ...:8081
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: .AspNet.Consent=yes
HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Date: Tue, 02 Oct 2018 17:00:10 GMT
Content-Length: 5955
Proxy-Support: Session-Based-Authentication
Насколько я могу судить, единственное, что отличается от конфигурации, - это то, что опубликованный веб-сайт имеет привязки к порту 8081. В обоих случаях выполняется один и тот же код, поэтому это должно быть какой-то проблемой конфигурации.
Дано: В рабочем случае первоначальный ответ исходит от IIS, второй ответ исходит от Microsoft-HTTPAPI/2.0, а третий ответ исходит от Kestrel.
Вопросы для продолжения: Является ли средний сервер частью основного модуля ASP.Net? Возможно ли, что в нем отсутствует какая-либо конфигурация конфигурации, которая мешает ему получить передачу обслуживания? (например, прослушивание только через порт 80 или что-то еще)
1 ответ
Проблема, с которой я столкнулся, была вызвана групповой политикой, которая блокировала клиентов от аутентификации NTLM для хостов, а не в белом списке групповой политики. Я не уверен, почему аутентификация Kerberos не использовалась, но добавление хоста в белый список позволило продолжить согласование аутентификации.