Открыть сервис

OpenID Connect

OpenID Connect (OIDC) — это открытый протокол аутентификации, построенный поверх протокола OAuth 2.0, который позволяет веб-приложениям, мобильным приложениям и API-интерфейсам проверять личность пользователя и получать базовую информацию о его профиле. В отличие от OAuth 2.0, который в первую очередь предназначен для делегирования доступа к ресурсам (авторизации), OIDC специализируется именно на аутентификации — подтверждении того, что пользователь является тем, за кого себя выдаёт. Протокол был разработан рабочей группой OpenID Foundation и впервые опубликован в 2014 году.

История и предпосылки создания

До появления OIDC основным протоколом для децентрализованной аутентификации был OpenID 2.0, который, несмотря на свою популярность, имел ряд недостатков: сложность реализации, отсутствие встроенной поддержки JSON и REST-архитектуры, а также проблемы с безопасностью. Параллельно развивался протокол OAuth 2.0, который стал стандартом для авторизации, но не предоставлял стандартного способа аутентификации.

В 2012 году сообщество разработчиков осознало необходимость создания единого протокола, который бы сочетал простоту OAuth 2.0 с возможностями аутентификации OpenID. В результате был разработан OpenID Connect, который использует OAuth 2.0 в качестве транспортного уровня, добавляя к нему специфичные для аутентификации механизмы. Первая финальная версия спецификации (1.0) была опубликована в феврале 2014 года. С тех пор OIDC стал основой для многих современных систем единого входа (Single Sign-On, SSO) и федеративных систем управления идентификацией.

Архитектура и основные концепции

Протокол OIDC основан на модели «клиент-сервер», где участвуют три основные стороны:

Ключевым нововведением OIDC является ID Token — токен в формате JSON Web Token (JWT), который содержит утверждения (claims) о пользователе. ID Token включает обязательные поля: идентификатор пользователя (sub), идентификатор поставщика удостоверений (iss), время выдачи (iat) и время истечения (exp). Дополнительно могут передаваться такие данные, как имя пользователя, адрес электронной почты, дата рождения и т.д.

Потоки аутентификации (Flows)

OIDC определяет несколько потоков аутентификации, которые различаются по способу взаимодействия между клиентом и сервером:

Структура токенов и данные

Основные типы токенов в OIDC:

Стандартные утверждения (Claims)

Спецификация OIDC определяет набор стандартных утверждений, которые могут быть включены в ID Token или получены через UserInfo Endpoint:

Применение и значение

OpenID Connect широко используется в современных веб- и мобильных приложениях для реализации единого входа (SSO). Это позволяет пользователям входить на множество сайтов с помощью одной учётной записи (например, через Google, Яндекс, VK или Apple). Основные области применения:

Безопасность и критика

OpenID Connect считается одним из самых безопасных протоколов аутентификации, однако его реализация требует соблюдения ряда мер предосторожности:

Критика OIDC связана с его сложностью по сравнению с более простыми решениями, такими как SAML или токены на основе паролей. Также отмечается, что протокол требует значительных вычислительных ресурсов для проверки подписей JWT, что может быть проблемой для высоконагруженных систем.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →