Перейти к содержанию

Авторизация в ASP.NET Core

В ASP.NET Core есть встроенная авторизация, однако в ASP.NET Core 5.0 (и позже) чаще всего применяется авторизация с компонентом AuthorizationMiddleware, который должен быть размещен после компонентов маршрутизации и аутентификации, но перед компонентом конечной точки.
Pasted image 20220616194102.png
В этом случае RoutingMiddleware выбирает конечную точку для выполнения, в том числе заполняя требования к авторизации для выбранной конечной точки (обычно определяется декорированием атрибутом [Authorize]).
AuthenticationMiddleware десериализует зашифрованный файл cookie (или токен носителя для API), ассоциированный с запросом, создавая объект ClaimsPrincipal, хранящийся как свойство HttpContext.User. Он содержит все утверждения, добавленные в cookie, когда пользователь прошел аутентификацию.
Далее AuthorizationMiddleware проверяет, есть ли у выбранной конечной точки какие-либо требования для авторизации, на основе метаданных, предоставленных RoutingMiddleware. Если таковые имеются, используется HttpContext.User для определения, может ли текущий пользователь выполнить конечную точку.

Примечание

Порядок компонентов очень важен. Вызов метода UseAuthorization() должен идти после UseRouting() и UseAuthentication(), но до метода UseEndpoints().

Изменения в авторизации для ASP.NET Core 3.0

До ASP.NET Core 3.0 компонента AuthorizationMiddleware не существовало - логика авторизации выполнялась атрибутом [Authorize] как часть конвейера фильтров MVC.
Новый дизайн, использующий AuthorizationMiddleware в сочетании с маршрутизацией конечных точек позволяет применять дополнительные сценарии, упрощая применение авторизации к конечным точкам, не относящимся к MVC или страницам Razor.

Предотвращение доступа анонимных пользователей к вашему приложению

Обработка запросов, не прошедших аутентификацию


Последнее обновление : 21 декабря 2022 г.
Дата создания : 8 октября 2022 г.

Комментарии

Комментарии