Ошибка установления связи в приложении 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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