IIS и HttpListener (.NET) с аутентификацией Windows - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть вопрос по поводу проверки подлинности Windows с IIS и HttpListner

У меня есть следующие настройки (Все установлены в одном окне Windows 8.1. Нет внешних связей).Все запросы отправляются как http://localhost/......

IIS

Аутентификация веб-приложения ASP.Net

Anonymous: Disabled 
Windows Authentication: Enabled

.Net httpListener

, запущенная как служба, запущенакак локальная системная учетная запись.и включена проверка подлинности Windows

this.httpListener = new HttpListener();
this.httpListener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;

Приложение UWP (Windows 8.1)

Приложение UWP похоже на веб-браузер.Он имеет элемент управления WebView для просмотра веб-содержимого.

Включены следующие возможности

  • Аутентификация предприятия
  • Интернет (клиент)
  • Расположение
  • Частные сети (клиент и сервер)

Проблема

Когда я перехожу из приложения uwp в веб-приложение IIS, он запрашивает учетные данные, открывая диалоговое окно.Это раздражает с точки зрения взаимодействия с пользователем, потому что пользователь вошел в систему с теми же учетными данными.Но когда я получаю доступ к Http Listener, он аутентифицируется правильно и не вводит диалоговое окно учетных данных.

Также я проверял запросы через fiddler.Первоначальный запрос идентичен, но со следующими шагами для запроса IIS он постоянно запрашивает NTLM.

HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.5
WWW-Authenticate: Negotiate oYHOMIHLoAMKAQGhDAYKKwYBBAGCNwICC........
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET

Начальный запрос / ответ

IIS

Запрос

GET http://localhost/webapp_net/ HTTP/1.1
Accept-Encoding: gzip, deflate
Host: localhost
Connection: Keep-Alive

Ответ

HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.5
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET,POST
Date: Tue, 20 Nov 2018 21:37:24 GMT
Content-Length: 6016
Proxy-Support: Session-Based-Authentication

HttpListener

Запрос

GET http://localhost/appman HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-NZ
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; WebView/2.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: localhost

Ответ

HTTP/1.1 401 Unauthorized
Content-Length: 0
Server: Microsoft-HTTPAPI/2.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
Date: Tue, 20 Nov 2018 21:37:18 GMT
Proxy-Support: Session-Based-Authentication

У кого-нибудь есть подобный опыт или объяснение этому?

...