В чем ключевое различие между протоколами OAuth 2.0 и OpenID Connect

Ответ

Ключевое различие заключается в их основной задаче:

  • OAuth 2.0 — это протокол авторизации. Он отвечает на вопрос: «Что это приложение может делать от моего имени?».
  • OpenID Connect (OIDC) — это надстройка над OAuth 2.0 для аутентификации. Он отвечает на вопрос: «Кто этот пользователь?».

Проще говоря, OIDC — это OAuth 2.0 с добавлением уровня идентификации.

Технические отличия:

  1. Цель:

    • OAuth 2.0: Предоставление клиентскому приложению ограниченного доступа к ресурсам пользователя на сервере (например, доступ к фото в Google Photos).
    • OIDC: Проверка личности пользователя и получение базовой информации о нём (имя, email и т.д.) для входа в приложение.
  2. Возвращаемые данные (токены):

    • OAuth 2.0 возвращает access_token, который является непрозрачной строкой для клиента и используется для доступа к API.
    • OIDC возвращает access_token и дополнительно id_token.
  3. ID Token:

    • id_token — это ключевое нововведение OIDC. Это JSON Web Token (JWT), который содержит информацию о пользователе (claims), такую как его уникальный идентификатор (sub), кем и когда он был выдан. Клиентское приложение может проверить подпись этого токена и доверять информации в нём, не делая дополнительных запросов на сервер.