Протокол авторизации
Протокол авторизации — это формализованный набор правил и процедур, определяющих, каким образом субъект (пользователь, устройство, процесс) получает права на выполнение определённых действий с ресурсами (данными, файлами, функциями системы) после успешного прохождения аутентификации (подтверждения своей идентичности). В отличие от аутентификации, которая отвечает на вопрос «кто ты?», авторизация решает вопрос «что тебе разрешено делать?». Протоколы авторизации являются ключевым элементом систем управления доступом (Access Control) и информационной безопасности.
Основные понятия
Авторизация в контексте протоколов включает несколько фундаментальных компонентов:
- Субъект доступа — пользователь, устройство, программа или процесс, запрашивающий доступ.
- Объект доступа — ресурс, к которому запрашивается доступ (файл, база данных, веб-страница, API-метод).
- Права доступа — разрешённые действия (чтение, запись, выполнение, удаление, управление).
- Политика доступа — набор правил, определяющих, какие субъекты и при каких условиях могут получить доступ к объектам.
- Токен авторизации — цифровой объект, выдаваемый после успешной авторизации, содержащий информацию о правах субъекта.
История развития
Первые протоколы авторизации появились в многопользовательских операционных системах 1960-х годов, где использовались списки контроля доступа (ACL). С развитием сетей и распределённых систем возникла необходимость в протоколах, работающих на уровне приложений.
В 1990-е годы с появлением веба возникли первые протоколы авторизации для HTTP, такие как HTTP Basic Auth (RFC 7617) и HTTP Digest Access Authentication (RFC 7616). В 2000-е годы, с ростом числа веб-сервисов и API, появились более сложные протоколы: OAuth (первая версия в 2007 году, вторая — в 2012 году), SAML (Security Assertion Markup Language, стандарт OASIS с 2002 года) и OpenID Connect (надстройка над OAuth 2.0, 2014 год).
Классификация протоколов авторизации
Протоколы авторизации можно классифицировать по нескольким признакам.
По модели взаимодействия
- Централизованные — вся авторизация выполняется единым сервером (например, Kerberos).
- Децентрализованные — авторизация выполняется на стороне каждого ресурса (например, классические ACL).
- Федеративные — авторизация делегируется внешнему провайдеру (например, OAuth, SAML, OpenID Connect).
По типу токенов
- На основе cookies — токены хранятся в браузере в виде HTTP-куки.
- На основе JWT (JSON Web Token) — токены в формате JSON, подписанные цифровой подписью.
- На основе SAML-ассерций — токены в формате XML, подписанные и зашифрованные.
По способу передачи
- В заголовках HTTP — например, заголовок
Authorization: Bearer <token>. - В параметрах URL — токен передаётся в строке запроса (менее безопасно).
- В теле запроса — токен передаётся в POST-запросе.
Основные протоколы авторизации
OAuth 2.0
OAuth 2.0 (RFC 6749) — это протокол авторизации, позволяющий делегировать доступ к ресурсам без передачи пароля. Он широко используется в веб-приложениях, мобильных приложениях и API. OAuth 2.0 определяет несколько грантов (grant types) для получения токена доступа:
- Authorization Code Grant — для веб-приложений с серверной частью.
- Implicit Grant — для одностраничных приложений (устаревший, не рекомендуется).
- Resource Owner Password Credentials Grant — для доверенных приложений (передача логина и пароля).
- Client Credentials Grant — для сервер-серверного взаимодействия.
OAuth 2.0 использует токены доступа (access tokens) и токены обновления (refresh tokens). Токены доступа обычно имеют ограниченное время жизни (например, 1 час), а токены обновления позволяют получить новый токен доступа без повторной аутентификации.
OpenID Connect
OpenID Connect (OIDC) — это протокол аутентификации и авторизации, построенный поверх OAuth 2.0. Он добавляет слой идентификации, позволяя клиенту получать информацию о пользователе (ID-токен). OIDC используется в системах единого входа (SSO) и федеративной аутентификации.
SAML 2.0
SAML 2.0 (Security Assertion Markup Language) — это стандарт на основе XML для обмена данными аутентификации и авторизации между сторонами: поставщиком удостоверений (IdP) и поставщиком услуг (SP). SAML широко используется в корпоративных средах и государственных информационных системах. Он поддерживает как аутентификацию, так и авторизацию, а также передачу атрибутов пользователя.
Kerberos
Kerberos — это протокол аутентификации и авторизации, разработанный в Массачусетском технологическом институте (MIT) в 1980-х годах. Он использует симметричное шифрование и билеты для предоставления доступа к ресурсам. Kerberos является основой для Active Directory в Windows-средах.
HTTP Basic и Digest Access Authentication
HTTP Basic Auth — простейший протокол, где имя пользователя и пароль передаются в заголовке HTTP в кодировке Base64 (не шифруются). HTTP Digest Access Authentication — улучшенная версия, где пароль не передаётся в открытом виде, а используется хеш-функция. Оба протокола редко используются в современных веб-приложениях из-за низкой безопасности.
Применение
Протоколы авторизации применяются во всех сферах, где требуется разграничение доступа:
- Веб-приложения и мобильные приложения — OAuth 2.0 и OpenID Connect для входа через социальные сети (Google, VK, Яндекс) и доступа к API.
- Корпоративные системы — SAML и Kerberos для единого входа (SSO) в Active Directory и корпоративные порталы.
- Облачные сервисы — OAuth 2.0 для доступа к облачным API (AWS, Google Cloud, Microsoft Azure).
- Интернет вещей (IoT) — протоколы авторизации для управления устройствами и доступа к данным с датчиков.
- Государственные информационные системы — SAML и ГОСТ-совместимые протоколы для авторизации в порталах госуслуг.
Проблемы и критика
Основные проблемы протоколов авторизации связаны с безопасностью и сложностью реализации:
- Уязвимости реализации — неправильная настройка OAuth 2.0 (например, отсутствие проверки redirect_uri) может привести к краже токенов.
- Сложность понимания — многие разработчики неправильно интерпретируют гранты OAuth 2.0, что приводит к ошибкам безопасности.
- Устаревшие протоколы — HTTP Basic Auth и Implicit Grant считаются небезопасными и не рекомендуются к использованию.
- Проблемы с отзывом токенов — в OAuth 2.0 отзыв токена доступа может быть сложным, если токен долгоживущий.
- Федеративные риски — при использовании федеративных протоколов (SAML, OIDC) компрометация одного поставщика удостоверений может скомпрометировать все подключённые сервисы.
Будущее протоколов авторизации
Современные тенденции включают:
- Passwordless-авторизация — использование биометрии, аппаратных ключей (FIDO2, WebAuthn) вместо паролей.
- Zero Trust — модель безопасности, где авторизация проверяется при каждом запросе, а не только при входе в систему.
- Децентрализованные протоколы — подходы на основе блокчейна и самосуверенной идентичности (Self-Sovereign Identity, SSI).
- Квантовоустойчивая криптография — разработка протоколов, устойчивых к атакам с использованием квантовых компьютеров.
Источники
- RFC 6749 — The OAuth 2.0 Authorization Framework
- RFC 7519 — JSON Web Token (JWT)
- RFC 7617 — The 'Basic' HTTP Authentication Scheme
- RFC 7616 — HTTP Digest Access Authentication
- SAML V2.0 Standard — OASIS
- OpenID Connect Core 1.0 Specification
- Kerberos: The Network Authentication Protocol — MIT
- ГОСТ Р 34.10-2012 — Информационная технология. Криптографическая защита информации
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →