ASP.NET Ядро с Windows auth всегда выдает 403

#asp.net-core-3.1 #.net-core-3.1

#asp.net-core-3.1 #.net-core-3.1

Вопрос:

Используя Visual Studio 2019, я создал API .NET Core и сказал ему использовать проверку подлинности Windows. Затем я отредактировал файл WeatherForecastController.cs и добавил простой почтовый маршрут:

 [HttpPost]
public ActionResult Foo()
{
    return NoContent();
}
 

Если я затем запускаю приложение локально, через VS, и пытаюсь опубликовать его, передавая учетные данные NTLM, оно по-прежнему выдает запрещенную (403) ошибку. Я видел несколько возможных решений этой проблемы в Google, но, похоже, ничего не работает.

В моем Startup.cs у меня есть это

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment()) {
        app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();
    app.UseRouting();
    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
}
 

и в конфигурационных службах, которые я добавил

 services.AddAuthentication(IISDefaults.AuthenticationScheme);
 

Комментарии:

1. Украшен ли ваш контроллер атрибутом [Authorize]?

2. @mac да, это есть в шаблоне по умолчанию.

3. Как выглядит ваш startup.cs?

4. Это просто значение по умолчанию, которое создает Visual Studio. Я ничего не редактировал, кроме добавления HttpPost. Он вызывает UseAuthorization в методе Configure, если это то, что вы ищете.

5. Ознакомьтесь со схемами аутентификации .net core (эта схема конкретно связана с аутентификацией Windows) здесь: docs.microsoft.com/en-us/aspnet/core/security/authentication /. … Попробуйте добавить службы. Добавление аутентификации (IISDefaults. Схема аутентификации);. Имейте в виду, что порядок, в котором вы добавляете промежуточное программное обеспечение в Configure, важен: docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware /…

Ответ №1:

Ну, это не имело никакого отношения к аутентификации. Почтальон возвращал 403, несмотря ни на что. Я, наконец, опустился до выполнения этого вручную с помощью curl и обнаружил, что сервер выдает исключение в совершенно не связанной области. Исправление этого исправило проблему.

Комментарии:

1. В чем была проблема? Я вижу то же самое

2. @Alex, как я уже сказал, это никак не связано. Я даже не помню, что. Просто попробуйте использовать curl напрямую, и вы можете увидеть лучшую ошибку. Я часто нахожу, что Почтальон делает глупости, которые скрывают истинную проблему. Я почти перестал его использовать.