Ответ
Ключевое различие заключается в их основной задаче:
- OAuth 2.0 — это протокол авторизации. Он отвечает на вопрос: «Что это приложение может делать от моего имени?».
- OpenID Connect (OIDC) — это надстройка над OAuth 2.0 для аутентификации. Он отвечает на вопрос: «Кто этот пользователь?».
Проще говоря, OIDC — это OAuth 2.0 с добавлением уровня идентификации.
Технические отличия:
-
Цель:
- OAuth 2.0: Предоставление клиентскому приложению ограниченного доступа к ресурсам пользователя на сервере (например, доступ к фото в Google Photos).
- OIDC: Проверка личности пользователя и получение базовой информации о нём (имя, email и т.д.) для входа в приложение.
-
Возвращаемые данные (токены):
- OAuth 2.0 возвращает
access_token
, который является непрозрачной строкой для клиента и используется для доступа к API. - OIDC возвращает
access_token
и дополнительноid_token
.
- OAuth 2.0 возвращает
-
ID Token:
id_token
— это ключевое нововведение OIDC. Это JSON Web Token (JWT), который содержит информацию о пользователе (claims), такую как его уникальный идентификатор (sub
), кем и когда он был выдан. Клиентское приложение может проверить подпись этого токена и доверять информации в нём, не делая дополнительных запросов на сервер.