OAuth делегирует доступ к ресурсу, OIDC стандартизирует результат проверки пользователя. Получение токена доступа не заменяет проверенный ID Token для клиента.
OAuth 2.0
Определение
OAuth 2.0 — протокол, по которому приложение получает ограниченный доступ к защищённому ресурсу от имени его владельца или от своего имени.
Также ищут: OAuth · протокол делегирования доступа · модель авторизации OAuth
Зачем это знать
Разделение ролей помогает назначить проверки правильной стороне. Список старых способов выдачи не заменяет выбранный профиль безопасности, а успешный вызов с токеном не подтверждает вход конкретного человека.
Карта понятия
Что подтверждено
OAuth 2.0 позволяет клиенту получить ограниченный доступ к ресурсу HTTP от имени владельца ресурса либо от собственного имени.
Граница применимости: Модель делегирования доступа OAuth 2.0.
OAuth определяет делегирование доступа, но не сообщает стандартным способом, как был проверен пользователь; этот слой добавляет OpenID Connect.
Граница применимости: Граница между авторизацией OAuth и проверкой личности в OpenID Connect.
OAuth 2.0 различает владельца ресурса, клиента, сервер авторизации и ресурсный сервер. Клиент запрашивает доступ, сервер авторизации выдаёт токен, а ресурсный сервер принимает защищённые запросы; роли могут совмещаться в одном продукте, но их обязанности различаются.
Граница применимости: Четыре роли RFC 6749, раздел 1.1. Роль протокола не отождествляется с отдельной физической машиной или обязательным человеком.
Наличие способа выдачи в исходном RFC 6749 не делает его рекомендуемым для нового решения. RFC 9700 отдельно запрещает выдачу по паролю владельца ресурса; список исторических способов и выбранная политика безопасности проверяются раздельно.
Граница применимости: Сопоставление RFC 6749 с RFC 9700, раздел 2.4. Запрет относится к передаче пароля владельца ресурса клиенту для этого способа выдачи.
Служба может получить токен от собственного имени без делегирования конкретного пользователя. Поэтому один успешный вызов API с токеном OAuth не сообщает стандартный результат проверки личности человека.
Граница применимости: Редакторское применение различия OAuth и OIDC к машинному клиенту; наличие пользователя или его идентификатора в произвольном токене не предполагается.
Не путать
OAuth задаёт взаимодействие участников, клиент — одна из его ролей. Приложение может просить доступ от имени владельца или от своего имени.
Что проверить
- Определите владельца ресурса.
- Укажите клиентское приложение.
- Найдите сервер авторизации.
- Укажите ресурсный сервер API.
- Выберите способ выдачи и применимый профиль RFC.
- Разделите служебный доступ и вход пользователя.
- Не выводите личность человека из одного токена доступа.
Первоисточники
- OpenID Connect Core 1.0 incorporating errata set 2
Определяет identity layer поверх OAuth 2.0, openid scope, ID Token и правила его validation.
- Best Current Practice for OAuth 2.0 Security
Актуализирует OAuth security: exact redirect matching, PKCE, sender-constrained tokens и безопасный refresh-token lifecycle.
Утверждения: 04