Сервер авторизации (authorization server) — это сервер, выдающий клиенту токены доступа после успешной аутентификации владельца ресурса и прохождения процедуры авторизации.
Назначение
Сервер авторизации обеспечивает безопасное управление доступом к защищенным ресурсам в системах, использующих протоколы OAuth 2.0 и OpenID Connect. Его основные задачи:
- Проверка подлинности пользователя (владельца ресурса).
- Выдача токенов доступа и обновления для клиентов (приложений).
- Применение политик доступа для ограничения действий клиента.
- Поддержка единого входа (SSO) и интеграции с внешними сервисами.
Серверы авторизации используются в веб-приложениях, мобильных приложениях, API и устройствах Интернета вещей, где требуется безопасный доступ к данным.
Роль в OAuth 2.0
В протоколе OAuth 2.0 сервер авторизации выступает посредником между клиентом (приложением), владельцем ресурса (пользователем) и сервером ресурсов (где хранятся данные). Он:
- Аутентифицирует пользователя и получает его согласие на доступ.
- Выдает клиенту токены доступа, которые тот использует для обращения к серверу ресурсов.
- Может выдавать токены обновления для продления доступа без повторной аутентификации.
В OpenID Connect сервер авторизации дополнительно выдает идентификационные токены (ID tokens) для аутентификации пользователя.
Ключевые функции
Сервер авторизации выполняет следующие функции:
- Аутентификация: Проверяет подлинность владельца ресурса (например, через логин, пароль или биометрию).
- Авторизация: Получает согласие пользователя на предоставление доступа клиенту.
- Выдача токенов:
- Токены доступа (access tokens) для работы с ресурсами.
- Токены обновления (refresh tokens) для получения новых токенов доступа.
- Идентификационные токены (ID tokens) в OpenID Connect.
- Управление политиками: Определяет области видимости (scopes) и ограничения доступа.
- Обеспечение безопасности: Использует HTTPS и криптографические подписи для защиты токенов.
Взаимодействие с другими компонентами
Сервер авторизации взаимодействует с тремя основными ролями в OAuth 2.0:
- Клиент: Приложение, которое запрашивает доступ к ресурсам. Клиент может быть публичным (например, мобильное приложение) или конфиденциальным (например, серверное приложение).
- Владелец ресурса: Пользователь, который аутентифицируется и предоставляет разрешение на доступ через сервер авторизации.
- Сервер ресурсов: Система, хранящая данные пользователя и принимающая токены доступа для проверки.
Процесс взаимодействия:
- Клиент перенаправляет пользователя на сервер авторизации.
- Пользователь аутентифицируется и подтверждает доступ (например, через экран согласия).
- Сервер авторизации выдает клиенту разрешение на доступ (например, код авторизации).
- Клиент обменивает разрешение на токен доступа.
- Клиент использует токен для обращения к серверу ресурсов.
Типы серверов авторизации
Серверы авторизации могут быть двух типов:
- Орг-сервер: Встроенный сервер, предоставляемый платформой управления идентификацией. Используется для единого входа (SSO) и доступа к API платформы. Не поддерживает кастомизацию политик или областей видимости.
- Пользовательский сервер: Настраиваемый сервер, созданный для защиты собственных API. Поддерживает кастомные области видимости, политики и дополнительные функции.
Тип сервера | Особенности | Применение |
Орг-сервер | Встроенный, не настраиваемый, для SSO | Единый вход, доступ к API платформы |
Пользовательский | Настраиваемый, для защиты API | Защита собственных API, кастомные политики |
Безопасность
Сервер авторизации повышает безопасность за счет:
- Токенов вместо учетных данных: Клиенты получают токены, а не логин и пароль пользователя.
- Ограничения доступа: Области видимости (scopes) определяют, какие данные или функции доступны.
- Шифрования: Использование HTTPS и криптографических подписей для защиты токенов.
- Отзыва токенов: Возможность аннулировать токены при компрометации.
Однако существуют риски:
- Неправильная настройка политик может привести к чрезмерному доступу.
- Уязвимости в реализации, такие как AS Mix-Up Attack, могут позволить злоумышленникам перенаправить токены. Для минимизации рисков рекомендуется использовать современные стандарты, такие как PKCE для публичных клиентов, и регулярно обновлять сервер.
Применение
Серверы авторизации используются в различных сценариях:
- Единый вход (SSO): Аутентификация пользователей в нескольких приложениях через один сервер.
- Защита API: Обеспечение безопасного доступа к данным через API.
- Интеграция сервисов: Доступ приложений к данным пользователя в облачных хранилищах или других системах.
- Устройства IoT: Авторизация устройств с ограниченным вводом через потоки, такие как Device Authorization.
Значение в современных системах
Сервер авторизации — основа современных систем аутентификации и авторизации, таких как OAuth 2.0 и OpenID Connect. Он обеспечивает безопасное и удобное управление доступом, позволяя пользователям делегировать права приложениям без риска утечки данных. С развитием стандартов, таких как OAuth 2.1, роль серверов авторизации продолжает расти, особенно в облачных и мобильных приложениях.