Должно ли промежуточное ПО аутентификации / авторизации возвращать 403 для отсутствующих маршрутов API? - PullRequest
0 голосов
/ 16 мая 2018

Я работаю с ASP.NET Core 2.0 и приступаю к настройке файла Startup.cs.Мне известно, что из чтения следует, что порядок промежуточного программного обеспечения имеет значение.

По этой ссылке: https://docs.microsoft.com/en-us/aspnet/core/migration/http-modules?view=aspnetcore-2.0

Существует следующая диаграмма: enter image description here

Указывает, что если предоставленное промежуточное ПО аутентификации настроено правильно, а затем, если аутентификация не пройдена, независимо от того, существует маршрут или нет неавторизованного ответа (HTTP 401 - Неавторизовано), отправляется

В моем сценарии я получаю ответ HTTP 404 (Not Found) для несуществующих маршрутов.Прежде чем опубликовать какой-то код, правильно ли мое понимание того, как промежуточное программное обеспечение должно вести себя?

Спасибо.

1 Ответ

0 голосов
/ 16 апреля 2019

В дополнение к комментариям, которые подчеркивают различие между Аутентификацией и Авторизацией, эта цитата весьма полезна (от https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware):

Аутентификация не закорачивает неаутентифицированные запросы. Хотя промежуточное ПО аутентификации аутентифицирует запросы, авторизация (и отклонение) происходит только после того, как MVC выберет определенный Razor Page или MVC контроллер и действие.

Если не выбрать Razor Page или контроллер MVC, это приведет к HTTP 404 (не найден), прежде чем проверки авторизации приведут к HTTP 401 (неавторизованному).

Имейте в виду, что атрибуты авторизации могут быть указаны на уровне действия, это означает, что проверки авторизации не будут иметь достаточной информации, чтобы принять или отклонить запрос, пока не будет выбрана страница или контроллер / действие (например, контроллер может быть оформлен с атрибутом [Authorize], в то время как определенные действия в нем отмечены атрибутом [AllowAnonymous].

...