OpenID был разработал Брэдом Фицпатриком, одним из создателей LiveJournal. Этот стандарт изначально проектировался, как независимый от провайдера метод аутентификации.
Позже появилась потребность в предоставлении дополнительной информации о конечном пользователе. Для решения этой проблемы было разработано расширение протокола — Simple Registration Extension. Оно позволило хранить и передавать по запросу информацию о «персонах». «Персона» — это запись, содержащая имя, адрес электронной почты и другие данные пользователя, которые обычно требуются для регистрации на сайтах.
Что такое OpenID для конечного пользователя? Это возможность зайти на ваш сайт и получить на нём аккаунт или возможность комментирования без дополнительной регистрации, используя существующий аккаунт на каком-либо сервисе, поддерживающем этот стандарт. Наглядно этот процесс показан на этом видеоролике.
Сейчас в блогосфере периодически всплывает проблема спам-комментариев, подписанных известными блогерами (провокация, обман). Если бы использовался OpenID — этих проблем было бы избежать легче, так как при аутентификация с его помощью однозначно показывает, что автор комментария является автором указанного сайта (или аккаунта).
Вот несколько примеров популярных сервисов с поддержкой OpenID:
Есть сервисы, которые не имеют другого функционала, являясь просто OpenID-серверами:
Для разработчиков в использовании OpenID не должно быть особых сложностей. В сети есть полные спецификации всех форматов и стандартов. Существует большое число всевозможных библиотек и классов, реализующих этот функционал.
Например, библиотека PHP OpenID Library позволяет производить аутентификацию по OpenID и самому являться провайдером аккаунтов. В комплекте к этой библиотеке идёт множество примеров реализации. То же самое можно осуществить по отдельности более простыми библиотеками class.openid.php и phpMyID.
Для многих популярных CMS и FW есть модули и плагины, которые можно использовать как примеры или как рабочие части проектов:
На мой взгляд, стандарт OpenID уже давно плотно прижился бы в блогосфере, если бы не одно досадное «но». Все OpenID плагины для популярной блог-CMS WordPress ужасны. И дело там даже не в том, что они написаны любителями, а в том, что та часть WordPress, которая отвечает за вывод комментариев и формы комментирования до версии 2.7 была сама реализована очень плохо и грубо.
Плагины, отвечающие за ветвление комментариев, подписку на новые комментарии, вывод различных капч, авторизацию и прочее в этом месте конфликтовали друг с другом, путались в шаблоне и работали не всегда.
В WordPress 2.7 ситуация немного улучшилась, но с OpenID проблема осталась: работает не всегда и не так как хотелось бы.
Сделать нужно просто: взять за основу форму комментариев сервиса Blogger (выбор способа аутентификации в выпадающем списке), в селект поместить список из OpenID, нескольких популярных сервисов с его поддержкой (LJ, LI, Blogger, Ya.ru, BestPersons) и типа «гость», которому адрес сайта вводить не нужно (только имя и e-mail).
Ещё придётся немного изменить способ отображения автора комментария, когда он уже оставлен. Большинство плагинов тупо приравнивает имя пользователя к его OpenID-идентификатору, а это просто адрес. Настоящее имя пользователя можно запросить у OpenID-провайдера вместе с e-mail и адресом сайта текущей персоны (он может отличаться от OpenID-идентификатора). В случае LiveJournal всё ещё проще — от идентификатора достаточно отрезать заранее известную вторую часть, а первую букву сделать заглавной.
Кроме того, у каждого сервиса есть характерные логотипы, которые было бы здорово выводить перед именем автора.
Задача, казалось бы, очевидная, ничего сложного в ней нет, а нормальной реализации мы, похоже, так и не дождёмся.
Предлагаю порассуждать на эту тему: хочет ли кто-либо участвовать? Может ли кто-то взяться? Есть ли ещё идеи на этот счёт?
Жилинский Владимир.