Чем отличаются OpenID, OpenID Connect и OAuth?

Различаем исторический OpenID, аутентификацию через OIDC и делегированный доступ OAuth 2.0; объясняем назначение ID Token и Access Token.

Короткий ответ

Что ответить на собеседовании

OAuth 2.0 описывает предоставление приложению ограниченного доступа к ресурсам, но сам по себе не стандартизирует вход пользователя в это приложение. OpenID Connect добавляет слой аутентификации поверх OAuth 2.0 и использует ID Token. Исторический OpenID 2.0 — отдельный протокол аутентификации, не надстройка над OAuth. ID Token и Access Token имеют разные назначения.

Подробный разбор

Ответ с пояснениями

Сначала стоит уточнить, что собеседник называет OpenID. Исторический OpenID Authentication 2.0 — самостоятельный протокол аутентификации с участием провайдера идентичности. Его нельзя автоматически считать OpenID Connect или описывать как надстройку над OAuth.

OAuth 2.0 предназначен для предоставления приложению ограниченного доступа к защищенным ресурсам. Например, приложение получает разрешение читать определенные данные через API. OAuth использует аутентификацию участников в своих процедурах, но сам по себе не задает стандартный способ сообщить приложению, какой пользователь в него вошел.

OpenID Connect, OIDC, добавляет такой слой аутентификации поверх OAuth 2.0. Запрос с областью openid позволяет использовать возможности OIDC. Провайдер выдает клиенту ID Token — утверждение о состоявшейся аутентификации и идентичности пользователя. Эти различия прямо описаны в OIDC Core.

Access Token предназначен для обращения к ресурсу, а ID Token — для клиента, проверяющего результат входа. Нельзя подменять их друг другом. ID Token имеет формат JWT, но наличие любого JWT еще не означает применение OIDC. Клиент должен проверить токен по правилам протокола, включая подлинность, издателя, аудиторию, срок действия и привязку к запросу, когда она требуется; простого декодирования недостаточно.

Для новых интерактивных интеграций обычно выбирают Authorization Code с PKCE и актуальные рекомендации безопасности, а не устаревшие примеры с implicit или password grant. Их ограничения разобраны в RFC 9700. Короткое различие: OAuth — доступ к ресурсам, OIDC — стандартизированное подтверждение входа поверх OAuth.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку