Как устранить неполадки проблем встроенной аутентификации для ядра 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 не использовалась, но добавление хоста в белый список позволило продолжить согласование аутентификации.

Другие вопросы по тегам