Существует несколько основных протоколов авторизации, которые используются для контроля доступа к ресурсам и сервисам. Они различаются по механике работы, безопасности и областям применения.
Протокол | Цель | Тип данных | Пример использования |
OAuth 2.0 | Авторизация, управление доступом | Токены (Access, Refresh) | Доступ к API, социальная авторизация |
OpenID Connect | Аутентификация поверх OAuth | ID токен (JWT) | "Вход с Google", "Вход с Facebook" |
SAML | Аутентификация и авторизация (SSO) | Утверждение (XML) | Корпоративные SSO системы |
Kerberos | Аутентификация и шифрование | Билеты (Tickets) | Корпоративные сети (Active Directory) |
LDAP | Аутентификация через директорию | Учетные данные | Корпоративные базы данных пользователей |
RADIUS | Аутентификация и управление доступом | Учетные данные | Управление сетевыми ресурсами |
CAS | Единый вход (SSO) | Токены SSO | Университетские или корпоративные системы |
Рассмотрим каждый из них более детально:
1. OAuth 2.0
Тип: Протокол авторизации
Цель: Предоставить сторонним приложениям доступ к ресурсам пользователя без необходимости раскрывать его учетные данные.
Ключевая особенность: Использует токены доступа (access tokens) для предоставления ограниченного доступа к защищённым ресурсам.
Механизм: После успешной авторизации OAuth 2.0 сервер выдаёт токен доступа, который затем может быть использован для запросов к API от имени пользователя.
Пример использования: Авторизация через Google или Facebook (когда вы входите в стороннее приложение с помощью учетной записи Google/Facebook).
Основные этапы:
Приложение направляет пользователя на сервер авторизации.
Пользователь соглашается предоставить доступ к своим ресурсам.
Сервер выдает токен доступа, который используется для доступа к API.
Потоки (grant types):
Authorization Code Grant (наиболее безопасный и популярный).
Implicit Grant (для клиентских приложений, но менее безопасный).
Client Credentials Grant (для серверных приложений, когда нужно авторизовать само приложение).
Password Grant (для получения токена доступа через передачу логина и пароля пользователя, используется редко).
2. OpenID Connect (OIDC)
Тип: Протокол аутентификации, построенный поверх OAuth 2.0
Цель: Авторизовать пользователя и получить его идентификационные данные.
Ключевая особенность: OpenID Connect расширяет OAuth 2.0 для поддержки аутентификации (проверки личности пользователя), предоставляя так называемый ID токен.
Механизм: Помимо токенов доступа, OpenID Connect предоставляет ID токен, который содержит информацию о пользователе, такую как его уникальный идентификатор, email и т.д.
Пример использования: "Вход с помощью Google" — это классический пример использования OIDC.
Основные этапы:
OAuth 2.0 используется для получения токена доступа.
OIDC добавляет получение ID токена, который содержит данные аутентификации пользователя.
3. SAML (Security Assertion Markup Language)
Тип: Протокол аутентификации и авторизации на основе XML.
Цель: Обеспечить единую точку входа (SSO) для доступа к нескольким приложениям.
Ключевая особенность: Использует формат XML для обмена данными между поставщиком идентификации (IdP) и поставщиком услуг (SP).
Механизм: Поставщик идентификации (например, корпоративный сервер) аутентифицирует пользователя, а затем выдает утверждение (assertion), которое передается на сайт или сервис для авторизации.
Пример использования: Корпоративные SSO системы, когда один логин дает доступ ко многим корпоративным приложениям (например, Microsoft Active Directory).
Основные этапы:
Пользователь аутентифицируется на IdP (например, в корпоративной сети).
IdP отправляет SAML утверждение поставщику услуг (например, веб-сайту).
Поставщик услуг предоставляет доступ пользователю на основе полученного утверждения.
4. Kerberos
Тип: Протокол аутентификации с распределением секретных ключей.
Цель: Защищённая аутентификация и авторизация в сетевых системах.
Ключевая особенность: Использует симметричные ключи и требует наличия доверенного третьего лица — Центра распределения ключей (KDC).
Механизм: Клиент и сервер получают билеты от KDC, которые используются для подтверждения личности и авторизации доступа.
Пример использования: Используется в корпоративных сетях, например, в Microsoft Active Directory.
Основные этапы:
Клиент запрашивает аутентификацию у KDC.
KDC выдает билет для клиента, который клиент использует для доступа к серверу.
Сервер проверяет билет и предоставляет доступ.
5. LDAP (Lightweight Directory Access Protocol)
Тип: Протокол доступа к каталогам данных.
Цель: Аутентификация и авторизация через централизованную базу данных, такую как директория пользователей.
Ключевая особенность: Использует древовидную структуру для хранения данных пользователей и прав доступа.
Механизм: Приложения и службы обращаются к LDAP-серверу для аутентификации пользователей и получения информации о них.
Пример использования: Корпоративные сети для централизованной аутентификации пользователей, управления доступом к сетевым ресурсам.
Основные этапы:
Клиент запрашивает доступ к директории на сервере LDAP.
Сервер проверяет учетные данные клиента и предоставляет соответствующие данные или разрешения.
6. RADIUS (Remote Authentication Dial-In User Service)
Тип: Протокол для централизованной аутентификации, авторизации и учёта.
Цель: Управление доступом к сетевым ресурсам через централизованный сервер.
Ключевая особенность: Часто используется для управления доступом в корпоративных сетях, обеспечивая аутентификацию пользователей и устройств.
Механизм: Клиенты отправляют запросы на доступ к серверу RADIUS, который проверяет учетные данные и отправляет ответ.
Пример использования: Сетевые компании используют RADIUS для управления доступом к Wi-Fi сетям, VPN и другим сетевым ресурсам.
7. CAS (Central Authentication Service)
Тип: Протокол единого входа (SSO).
Цель: Обеспечить единый вход для аутентификации пользователя через несколько приложений.
Ключевая особенность: После того как пользователь аутентифицируется один раз через CAS-сервер, он может получать доступ к различным сервисам без повторного ввода учетных данных.
Пример использования: Используется в университетах и крупных организациях для управления доступом к разным внутренним системам.