До этого момента мы разбирались с аутентификацией и авторизацией пользователей в ASP.NET Core с использованием JWT-токенов. При этом, не менее популярным вариантом аутентификации пользователей не только в ASP.NET Core, но и, в принципе, в веб-приложениях, является аутентификация с помощью cookies (куки). Рассмотрим этот вариант аутентификации, разработав небольшое приложение ASP.NET
Аутентификация и авторизация в ASP.NET Core
Аутентификация и авторизация в ASP.NET Core. Обновление JWT-токена (refresh token)
На данный момент, наше приложение работает с JWT-токеном: формирует токен, отправляет его пользователю в виде куки, считывает и вставляет токен в заголовок запроса. Приложение работает исправно — дает доступ к защищенному ресурсу только тем пользователям, которые соответствуют политике авторизации. В принципе, этого уже достаточно, чтобы можно было собрать небольшое приложение в ASP.NET Core для работы с какими-либо данными. Однако, помимо защиты нашего приложения от несанкционированного доступа к ресурсам следует также предусмотреть и удобство работы пользователя с системой. И сегодня мы рассмотрим один из вариантов того, как обеспечить повторное получение JWT-токена пользователем без непосредственного ввода учётных данных.
Аутентификация и авторизация в ASP.NET Core. Создание собственных ограничений авторизации
В предыдущей части мы рассмотрели пример авторизации пользователя на основе политик и остановились на том, что, несмотря на то, что встроенные возможности ASP.NET Core позволяют покрыть максимум потребностей разработчиков, всё же иногда необходимо добавить в работу политики авторизации пользователя своё ограничение, например, таковым является ограничение доступа пользователя по его возрасту. И сегодня мы рассмотрим вопрос создания собственных ограничений авторизации в ASP.NET Core.
Аутентификация и авторизация в ASP.NET Core. JWT и политики авторизации
В предыдущей части мы разобрались с тем, как организовать авторизацию пользователей по ролям, используя JWT-токены. Однако, авторизация по ролям — это не единственная возможность ASP.NET Core. Иногда бывает необходимо, чтобы пользователь соответствовал не одному критерию (принадлежности к конкретной роли), а сразу к группе критериев, например, должен быть определенного возраста, работать в определенной компании и иметь определенную должность. И в этом случае, разделение по ролям уже мало, чем нам поможет так как для авторизации приходится проводить анализ ряда критериев. В этом случае мы можем использовать различные политики авторизации.
Аутентификация и авторизация в ASP.NET Core. JWT и авторизация по ролям
Часто, для доступа к какому-либо ресурсу приложения недостаточно одного только факта аутентификации пользователя и необходимы дополнительные ограничения, например, авторизация по ролям. ASP.NET Core позволяет осуществлять авторизацию по ролям, используя рассмотренные нами ранее классы Claim
, ClaimsPrincipal
и ClaimIdentity
.
Аутентификация и авторизация в ASP.NET Core. JWT и объект HttpContext.User
Одной из задач аутентификации в приложении ASP.NET Core является установка личности пользователя, который представляется в приложении свойством User
класса HttpContext
. В этом свойстве могут передаваться различные сведения о пользователе — имя, логин, принадлежность к определенной группе пользователей и т.д., которые, в дальнейшем, могут использоваться в приложении для авторизации. В этой части мы продолжим работу над приложением, демонстрирующем аутентификацию и авторизацию с использованием JWT и разберемся, как можно использовать свойство HttpContext.User
Аутентификация и авторизация в ASP.NET Core. Авторизация клиента с помощью JWT
В предыдущей части мы разработали небольшое приложение, позволяющее аутентифицировать пользователя с использованием токенов JWT. Также мы протестировали работу приложения с использованием сервиса ReqBin и убедились, что токен работает — получили доступ к конечной точке, требующей авторизации пользователя. Однако, при разработке приложений (если это не обычный API для получения доступа к данным от сторонних клиентов) необходимо также предусмотреть и авторизацию пользователей с использованием полученного JWT-токена. И сегодня мы рассмотрим один из возможных вариантов того как происходит авторизация клиента с помощью JWT в ASP.NET Core
Аутентификация и авторизация в ASP.NET Core. Аутентификация на основе JWT-токенов
В предыдущей части мы рассмотрели основные моменты, связанные с аутентификацией и авторизацией пользователя и подключили необходимые сервисы и компоненты middleware в проект. Сегодня рассмотрим процесс аутентификации пользователя на основе JWT-токенов.
Аутентификация и авторизация в ASP.NET Core. Основные понятия
Тема аутентификации и авторизации в ASP.NET Core довольно обширная и сложная, поэтому, чтобы в итоге не запутаться в том что, как и зачем мы делаем, вначале разберемся с основными моментами аутентификации и авторизации пользователей в ASP.NET Core, а, затем попробуем разработать свою систему проверки пользователей с нуля, используя пустой шаблон проекта ASP.NET Core.