Ошибка установления связи в приложении ASP.NET Core 6 с использованием проверки подлинности NegotiateC#

Место общения программистов C#
Anonymous
Ошибка установления связи в приложении ASP.NET Core 6 с использованием проверки подлинности Negotiate

Сообщение Anonymous »

У меня есть приложение ASP.NET Core 6, которое использует схему аутентификации Negotiate для аутентификации с использованием аутентификации Windows (NTLM/Kerberos).
Я настраиваю служба аутентификации, например:

Код: Выделить всё

services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate();

services.AddAuthorization(options =>
{
options.DefaultPolicy = new AuthorizationPolicyBuilder(NegotiateDefaults.AuthenticationScheme)
.RequireAuthenticatedUser()
.Build();
}
Это работает правильно на моей локальной машине разработки, однако, когда я пытаюсь развернуть его на рабочем сервере, что-то ломается.
В частности, однажды развернуто, если я попытаюсь вызвать конечную точку, отмеченную [Authorize], браузер правильно отображает мне приглашение для входа в систему, но после ввода моих учетных данных серверная часть отвечает общей ошибкой 500.
Я заметил одну важную вещь: если я попытаюсь получить доступ к приложению изнутри самого сервера через https://localhost, аутентификация работает, но если я использую полный URL-адрес компьютера, например: https: //myserver.domain.local, он не работает, и я получаю ошибку 500.
Значит, это может быть связано с сетевым прокси-сервером или чем-то в этом роде? Как я могу это правильно отладить? Я попытался включить всю регистрацию на уровне «отладки», и вот что я вижу, когда получаю ошибку:

Идентификатор соединения «0HN6OHVHNEJKS», Запрос id "0HN6OHVHNEJKS:00000007": приложением было создано необработанное исключение.
System.InvalidOperationException: между запросами подтверждения аутентификации был получен анонимный запрос.
в Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.HandleRequestAsync()

в Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.HandleRequestAsync()

в Microsoft. AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)

в Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)

в Microsoft.AspNetCore.Session.SessionMiddleware. Invoke(контекст HttpContext)

в Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.g__Awaited|6_0(промежуточное ПО ExceptionHandlerMiddleware, контекст HttpContext, задача задачи)

в Microsoft.AspNetCore.Diagnostics. ExceptionHandlerMiddleware.HandleException(контекст HttpContext, ExceptionDispatchInfo edi)

в Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.g__Awaited|6_0(промежуточное ПО ExceptionHandlerMiddleware, контекст HttpContext, задача задачи)

в Microsoft .AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](приложение IHttpApplication`1)

Кажется, трассировка стека предполагает Во время рукопожатия я выполняю другие подключения, но я проверил на панели «Сеть» браузера и обнаружил, что у меня нет дополнительных ожидающих подключений.
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/790 ... entication

Вернуться в «C#»