Открыть сервис

Протокол авторизации

Протокол авторизации — это формализованный набор правил и процедур, определяющих, каким образом субъект (пользователь, устройство, процесс) получает права на выполнение определённых действий с ресурсами (данными, файлами, функциями системы) после успешного прохождения аутентификации (подтверждения своей идентичности). В отличие от аутентификации, которая отвечает на вопрос «кто ты?», авторизация решает вопрос «что тебе разрешено делать?». Протоколы авторизации являются ключевым элементом систем управления доступом (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 →