Авторизация (англ. authorization) — это процесс проверки прав пользователя на доступ к определённым ресурсам, функциям или данным в системе. Она следует за процессом аутентификации (идентификации личности) и определяет, что именно пользователь может делать в системе. Авторизация играет ключевую роль в обеспечении безопасности и управления доступом.
Основные концепты авторизации
Роли и права доступа: пользователи могут иметь разные роли, например, "администратор", "редактор", "гость". Каждая роль определяет набор разрешений, например, просмотр, редактирование, удаление данных.
Типы авторизации:
- ролевая (RBAC, Role-Based Access Control), в которой доступ предоставляется в зависимости от роли пользователя;
- дискреционная (DAC, Discretionary Access Control), в ней владелец ресурса сам определяет, кто имеет доступ;
- мандатная (MAC, Mandatory Access Control): Доступ строго регулируется правилами и уровнями секретности;
- атрибутная (ABAC, Attribute-Based Access Control), в которой решение о доступе зависит от атрибутов пользователя и объекта.
Механизмы авторизации:
- списки доступа (ACL, Access Control List);
- токены доступа (например, JWT — JSON Web Token);
- роли и группы пользователей.
Авторизация в различных системах:
- в веб-приложениях: - проверка доступа к страницам или API;
- в мобильных приложениях - ограничение функционала на основе подписки или роли;
- в сетях - ограничение доступа к устройствам, файлам или ресурсам;
- в базах данных - разграничение доступа к таблицам, строкам или полям.
Как происходит авторизация: шаги
Процесс авторизации включает несколько последовательных этапов, которые позволяют системе определить права доступа пользователя к ресурсам. Этот процесс начинается после успешной аутентификации и включает проверку соответствия прав доступа пользователя установленным правилам.
Аутентификация пользователя. Пользователь проходит процесс аутентификации (например, ввод логина и пароля, использование биометрии или двухфакторной проверки). Цель - убедиться, что пользователь является тем, за кого себя выдаёт.
Получение роли или атрибутов пользователя. После успешной аутентификации система извлекает из базы данных или токена информацию о роли, группе, атрибутах пользователя. Например:
Роль: "Администратор", "Пользователь", "Гость".
Атрибуты: уровень доступа, подписка, департамент.
Проверка правил доступа. Система сравнивает права пользователя с настройками доступа к запрашиваемому ресурсу или функции, может происходить сравнение роли с доступом к ресурсу (RBAC), и проверка дополнительных атрибутов, таких как время или местоположение (ABAC).
Принятие решения. На основе проверки система принимает одно из решений:
- Доступ разрешён. Пользователь получает доступ к запрашиваемому ресурсу или операции.
- Доступ запрещён. Пользователю выводится уведомление об ограничении доступа.
Регистрация события (логирование). Система записывает информацию об успешной или неуспешной авторизации в журнал активности для аудита или анализа безопасности.
Предоставление доступа. Если доступ разрешён, пользователю предоставляется возможность выполнять разрешённые действия:
- отображение запрошенной страницы;
- предоставление данных;
- включение соответствующего функционала.
Примеры авторизации
На веб-сайтах. Пользователи с правами администратора могут управлять контентом, тогда как гости могут только просматривать.
В корпоративных системах. Сотрудники из разных отделов имеют доступ только к своим проектам.
В социальных сетях. Пользователь может настроить, кто может видеть его профиль или посты (только друзья, все пользователи).
В банковских приложениях. Пользователи могут видеть только свои счета и выполнять операции в пределах их лимитов.
Современные методы авторизаци
- OAuth 2.0 - используется для авторизации доступа к сторонним сервисам (например, вход через Google или Facebook);
- OpenID Connect (OIDC) - расширение OAuth 2.0 для единой авторизации с передачей данных о пользователе;
- JWT (JSON Web Token) - лёгкий и безопасный способ передачи данных авторизации между клиентом и сервером;
- SAML (Security Assertion Markup Language) - используется в корпоративной среде для единого входа (SSO);
- API-ключи - уникальные ключи для идентификации приложений и предоставления доступа.