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

OpenID 2.0

OpenID 2.0 — это открытый децентрализованный протокол аутентификации, позволяющий пользователям использовать единую учётную запись (идентификатор OpenID) для входа на множество независимых веб-сайтов без необходимости повторной регистрации и ввода пароля на каждом из них. Протокол основан на архитектуре «клиент-сервер» и использует HTTP-перенаправления для передачи данных аутентификации, что устраняет необходимость в общих секретах между сайтами. OpenID 2.0 был разработан сообществом OpenID Foundation и стал значительным развитием оригинального протокола OpenID 1.0, расширив его функциональность и безопасность.

История

Протокол OpenID был впервые предложен в 2005 году разработчиком Брэдом Фицпатриком (Brad Fitzpatrick) как часть проекта LiveJournal. Первоначальная версия (OpenID 1.0) была простой и ориентированной на один домен. В 2006 году была выпущена версия 1.1, которая добавила поддержку нескольких доменов и улучшила механизмы обнаружения серверов.

В 2007 году сообщество OpenID Foundation выпустило спецификацию OpenID 2.0, которая стала основным стандартом на несколько лет. Ключевыми нововведениями стали:

  • Поддержка не только URL, но и XRI (Extensible Resource Identifier) в качестве идентификаторов.
  • Введение механизма «директивного обнаружения» (directed identity), позволяющего провайдерам идентификации (IdP) генерировать временные идентификаторы для пользователей.
  • Улучшенная поддержка аутентификации через мобильные устройства и другие небраузерные клиенты.
  • Более строгие требования к безопасности, включая обязательное использование SSL/TLS для передачи данных.

OpenID 2.0 был широко принят крупными интернет-компаниями, такими как Google, Yahoo!, Microsoft (через Windows Live ID) и AOL. Однако со временем протокол столкнулся с рядом проблем, включая сложность реализации, уязвимости к фишингу и отсутствие встроенной поддержки современных стандартов безопасности, таких как OAuth 2.0. В 2014 году OpenID Foundation официально объявил о прекращении поддержки OpenID 2.0 в пользу более современного стандарта OpenID Connect, основанного на OAuth 2.0.

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

OpenID 2.0 основан на трёх основных участниках:

  1. Пользователь (End User) — лицо, желающее аутентифицироваться на сайте.
  2. Провайдер идентификации (Identity Provider, IdP)сервер, который хранит учётные данные пользователя и подтверждает его личность.
  3. Проверяющая сторона (Relying Party, RP) — веб-сайт, который требует аутентификации пользователя.

Процесс аутентификации в OpenID 2.0 состоит из следующих этапов:

  1. Инициализация — пользователь вводит свой OpenID-идентификатор (обычно URL) на сайте RP.
  2. Обнаружение (Discovery) — RP выполняет HTTP-запрос к указанному URL, чтобы получить документ XRDS (eXtensible Resource Descriptor Sequence), который содержит информацию о серверах IdP, поддерживающих аутентификацию для данного идентификатора.
  3. Создание ассоциации (Association) — RP и IdP устанавливают временный общий секрет (ассоциацию) для шифрования последующих сообщений. Этот шаг опционален, но повышает безопасность.
  4. Запрос аутентификации (Authentication Request) — RP перенаправляет браузер пользователя на IdP с запросом аутентификации. Запрос содержит параметры, такие как openid.mode, openid.return_to (URL, на который IdP должен вернуть пользователя после аутентификации) и openid.claimed_id (идентификатор пользователя).
  5. Аутентификация пользователя — IdP запрашивает у пользователя учётные данные (обычно пароль) и, после успешной проверки, запрашивает согласие на передачу данных RP.
  6. Ответ аутентификации (Authentication Response) — IdP перенаправляет браузер пользователя обратно на RP с подписанным ответом, содержащим информацию об успешной или неудачной аутентификации.
  7. Верификация (Verification) — RP проверяет подпись ответа, используя ассоциацию, и, если всё корректно, предоставляет пользователю доступ.

Классификация и виды

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

  • Режим «проверка» (CheckID Immediate) — RP запрашивает аутентификацию, но не перенаправляет пользователя на IdP, если тот не может подтвердить личность мгновенно (например, если у пользователя нет активной сессии на IdP). В этом случае IdP возвращает ошибку, и RP может повторить запрос в режиме «проверка с перенаправлением».
  • Режим «проверка с перенаправлением» (CheckID Setup) — RP перенаправляет пользователя на IdP для ввода учётных данных. Это наиболее распространённый режим.
  • Режим «ассоциация» (Associate) — используется для установления временного общего секрета между RP и IdP.
  • Режим «проверка подписи» (Check Authentication) — RP может отправить полученный ответ IdP для проверки его подлинности, если ассоциация не была установлена.

Безопасность

OpenID 2.0 был разработан с учётом ряда угроз безопасности, но со временем были выявлены уязвимости:

  • Фишинг — злоумышленник может создать поддельный сайт RP, который перенаправляет пользователя на поддельный IdP, собирающий учётные данные. Для защиты рекомендуется использовать SSL/TLS и проверять сертификаты IdP.
  • Атаки повторного воспроизведения (Replay Attacks) — злоумышленник может перехватить и повторно отправить аутентификационный ответ. Для предотвращения используются временные метки и nonce (одноразовые числа).
  • Атаки на основе подмены идентификатора (Identity Spoofing) — злоумышленник может попытаться выдать себя за другого пользователя, используя поддельный идентификатор. Для защиты применяются цифровые подписи и ассоциации.
  • Уязвимости в реализации — многие реализации OpenID 2.0 были подвержены ошибкам, таким как неправильная проверка подписей или некорректная обработка перенаправлений.

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

OpenID 2.0 сыграл важную роль в развитии децентрализованной аутентификации в интернете. Он позволил пользователям управлять своими учётными данными через единый провайдер, снижая количество паролей, которые необходимо запоминать. Протокол был широко использован в блогах, форумах, социальных сетях и других веб-приложениях.

Крупнейшие провайдеры OpenID 2.0:

  • Google — предоставлял OpenID 2.0 для входа на сторонние сайты до 2015 года, когда перешёл на OpenID Connect.
  • Yahoo! — поддерживал OpenID 2.0 до 2016 года.
  • Microsoft — через Windows Live ID (позже Microsoft Account) реализовал поддержку OpenID 2.0.
  • AOL — предоставлял OpenID 2.0 для своих пользователей.

Несмотря на прекращение поддержки, OpenID 2.0 заложил основы для современных протоколов аутентификации, таких как OpenID Connect и OAuth 2.0, которые стали стандартами де-факто в веб-разработке.

Критика

OpenID 2.0 подвергался критике по нескольким причинам:

  • Сложность реализацииспецификация была громоздкой и требовала от разработчиков глубокого понимания протоколов HTTP, XML и криптографии.
  • Проблемы с удобством использования — пользователи часто путали OpenID-идентификаторы (URL) с обычными адресами веб-сайтов, что приводило к ошибкам ввода.
  • Отсутствие встроенной поддержки для мобильных устройств — хотя протокол был адаптирован для мобильных платформ, его реализация оставалась сложной.
  • Уязвимости к фишингу — протокол не предоставлял встроенных механизмов для защиты от поддельных IdP, что делало его уязвимым для атак социальной инженерии.

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

  • OpenID 2.0 был одним из первых протоколов, который ввёл понятие «децентрализованной идентичности» (decentralized identity), предвосхитив современные системы на основе блокчейна.
  • В 2008 году OpenID Foundation насчитывал более 50 000 веб-сайтов, поддерживающих OpenID, и более 1 миллиарда пользователей, имеющих OpenID-идентификаторы.
  • Протокол был использован в правительственных проектах, таких как система аутентификации для граждан США (US Government's OpenID Initiative), но не получил широкого распространения в государственном секторе.

Источники

  1. OpenID Foundation. "OpenID Authentication 2.0 - Final Specification". 2007.
  2. Recordon, D., & Reed, D. "OpenID 2.0: A Platform for User-Centric Identity Management". Proceedings of the 2006 Workshop on Digital Identity Management.
  3. Hardt, D. (Ed.). "The OAuth 2.0 Authorization Framework". RFC 6749, 2012.
  4. OpenID Foundation. "OpenID Connect Core 1.0". 2014.
  5. "OpenID 2.0 Security Considerations". OpenID Foundation, 2007.

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

На главную BFOmetr →