В чем ключевое различие между протоколами 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), кем и когда он был выдан. Клиентское приложение может проверить подпись этого токена и доверять информации в нём, не делая дополнительных запросов на сервер.

Ответ 18+ 🔞

А, слушай, сейчас я тебе так разложу эту хуйню, что ты офигеешь. Представь себе бар, да? Ты заходишь, а там два здоровенных вышибалы стоят. Один — это OAuth 2.0, а другой — его младший, но более дохуя умный братан, OpenID Connect.

Так вот, OAuth 2.0 — это такой вышибала, который спрашивает: «Эй, ты, пиздюк! Ты чё тут делать собрался? Фотки мои смотреть? Календарь? Ну ладно, на, вот тебя жетончик (access_token), иди, посмотри, но только то, что я разрешил, и не хуйни!». Он тебе даёт доступ к каким-то штукам, но кто ты такой — ему похуй, внатуре. Главное — что ты можешь делать.

А теперь его братишка, OIDC, подходит. Он уже не просто вышибала, он, блядь, почти что администратор. Он такой: «Стой, погоди. А ты вообще кто? Ты Вася или Петя? А ну-ка, предъяви!». И если всё чики-пуки, он тебе даёт не только тот же жетон для доступа, но ещё и, внимание, удостоверение личностиid_token. Это типа как паспорт, но в цифре, в виде этой вашей JWT-херни. Там написано, кто ты, какой у тебя sub (это твой уникальный айдишник, типа прописки в цифровом мире), и кто его, блядь, выдал. И главное — эту бумажку можно проверить прямо на месте, не бегая каждый раз в паспортный стол (то есть на сервер). Подпись посмотрел — и всё, доверяй, не хочу.

Короче, если OAuth 2.0 — это вопрос «Что ты можешь?», то OIDC — это вопросы «Ты кто?» и «Что ты можешь?» вместе взятые. OIDC — это просто OAuth 2.0, который взял, да и прикрутил к нему систему опознавания «свой-чужой», чтобы приложения не пускали к себе первых попавшихся левых пидоров.

Запомни: access_token — это ключ от какой-то одной комнаты, а id_token — это твоя фотка в пропуске, которая доказывает, что это вообще ты, а не какой-то мудак, который украл ключ. Вот и вся, блядь, разница, ёпта!