Я создал службу ClickOnce, используя HttpListener. Мне нужно, чтобы проверить подлинность подключения пользователя:HttpListener и IntegratedWindowsAuthentication по всей сети
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://*:80/ClickOnce/");
listener.AuthenticationSChemes = AuthenticationSchemes.IntegratedWindowsAuthentication;
while (true)
{
var context = listener.GetContext();
var id = context.User.Identity as WindowsIdentity;
if (id != null)
{
using (var impersonated = id.Impersonate())
{
...
}
}
}
Это прекрасно работает, пока служба находится на той же машине, что и клиент HTTP. Но если я попытаюсь подключиться к сервису с другой машины, он отказывается аутентифицироваться.
Если я подключаюсь через Internet Explorer, он запрашивает имя пользователя/пароль, пытается подключиться и затем возвращается к приглашению.
Если я подключаюсь через Chrome, он просто говорит: «Эта веб-страница недоступна ERR_INVALID_AUTH_CREDENTIALS».
Если я бегу VSTOInstaller.exe, он дает следующее сообщение об ошибке:
System.Deployment.Application.DeploymentDownloadException: Downloading http://.../OutlookAddin.vsto did not succeed.
System.Net.WebException: The remote server returned an error: (401) Unauthorized.
System.ComponentModel.Win32Exception: The target principal name is incorrect
at System.Net.NTAuthentication.GetOutgoingBlob(Byte[] incomingBlob, Boolean throwOnError, SecurityStatus& statusCode)
...
Если настроить анонимную проверку подлинности, что позволяет запросов через, но я не могу подтвердить подлинность пользователей.
Может ли HttpListener аутентифицироваться по сети? Или есть другая альтернатива HttpListener, которая поддерживает этот сценарий правильно?
Это не дает ответа на вопрос. Когда у вас будет достаточно [репутации] (https://stackoverflow.com/help/whats-reputation), вы сможете [прокомментировать любое сообщение] (https://stackoverflow.com/help/privileges/comment); вместо этого [предоставить ответы, которые не требуют разъяснений у аськи) (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- я-делать-вместо этого). - [От обзора] (/ review/low-quality-posts/17027164) –
Это довольно поздно, я портировал все это на IIS, потому что это был единственный способ заставить его правильно аутентифицироваться. –