Поделиться через


ASP0001. ПО промежуточного слоя авторизации неправильно настроено

Ценность
Идентификатор правила ASP0001
Категория Использование
Исправление является разрушающим или неразрушающим. Неразрывный

Причина

В коде запуска приложения обнаружен неупорядоченный вызов UseAuthorization .

Описание правила

Чтобы авторизация была эффективной для маршрутов конечных точек, вызов UseAuthorization должен отображаться между вызовами UseRouting и UseEndpoints. В отсутствие этого резервная политика, если она настроена, будет использоваться для авторизации всех запросов.

Рассмотрим следующий код:

app.UseStaticFiles();
app.UseAuthorization();

app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.MapDefaultControllerRoute();
});

Вызов UseAuthorization происходит раньше UseRouting и, следовательно, не учитывает специфики конечной точки.

Устранение нарушений

Измените порядок, в котором выполняются вызовы UseAuthorization и UseRouting.

app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

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

Когда следует подавлять предупреждения

Это правило безопасно подавлять, если вызов UseAuthorization предназначен для авторизации резервной политики во всех исходящих запросах или предназначен для авторизации ресурсов, не маршрутизируемых с помощью маршрутизации конечных точек.