OpenID и Simple Registration Extension.
21 Янв 2009
OpenID был разработал Брэдом Фицпатриком, одним из создателей LiveJournal. Этот стандарт изначально проектировался, как независимый от провайдера метод аутентификации.
Позже появилась потребность в предоставлении дополнительной информации о конечном пользователе. Для решения этой проблемы было разработано расширение протокола — Simple Registration Extension. Оно позволило хранить и передавать по запросу информацию о «персонах». «Персона» — это запись, содержащая имя, адрес электронной почты и другие данные пользователя, которые обычно требуются для регистрации на сайтах.
Что такое OpenID для конечного пользователя? Это возможность зайти на ваш сайт и получить на нём аккаунт или возможность комментирования без дополнительной регистрации, используя существующий аккаунт на каком-либо сервисе, поддерживающем этот стандарт. Наглядно этот процесс показан на этом видеоролике.
Сейчас в блогосфере периодически всплывает проблема спам-комментариев, подписанных известными блогерами (провокация, обман). Если бы использовался OpenID — этих проблем было бы избежать легче, так как при аутентификация с его помощью однозначно показывает, что автор комментария является автором указанного сайта (или аккаунта).
Вот несколько примеров популярных сервисов с поддержкой OpenID:
Есть сервисы, которые не имеют другого функционала, являясь просто OpenID-серверами:
-
Для разработчиков в использовании OpenID не должно быть особых сложностей. В сети есть полные спецификации всех форматов и стандартов. Существует большое число всевозможных библиотек и классов, реализующих этот функционал.
-
Например, библиотека PHP OpenID Library позволяет производить аутентификацию по OpenID и самому являться провайдером аккаунтов. В комплекте к этой библиотеке идёт множество примеров реализации. То же самое можно осуществить по отдельности более простыми библиотеками class.openid.php и phpMyID.
Для многих популярных CMS и FW есть модули и плагины, которые можно использовать как примеры или как рабочие части проектов:
- Один из плагинов к WordPress — WP OpenID
- Плагин к Zend Framework
- Плагин для Drupal
- Плагин к Symfony
На мой взгляд, стандарт 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 всё ещё проще — от идентификатора достаточно отрезать заранее известную вторую часть, а первую букву сделать заглавной.
Кроме того, у каждого сервиса есть характерные логотипы, которые было бы здорово выводить перед именем автора.
Задача, казалось бы, очевидная, ничего сложного в ней нет, а нормальной реализации мы, похоже, так и не дождёмся.
Предлагаю порассуждать на эту тему: хочет ли кто-либо участвовать? Может ли кто-то взяться? Есть ли ещё идеи на этот счёт?


Этот комментарий оставляю с помощью опен айди.
У меня такой вопрос:
Получается, что я могу оставить комментарий введя ник ЖЖ или ЛИ. И получается, что у меня два аккаунта?
Или я где-то не догоняю.
Нужно искать программиста, разбирающегося в WordPress и заинтересованного в появлении такого функционала на его сайте.
Я так полагаю, если будет плагин, реализующий то, что ты описал, количество комментариев, оставляемых на блоге, его использующем, может заметно увеличиться. Правильно?
Идея интересная… Покурю маны, мож чего придумаю…
Александр Анатольевич: с OpenID аккаунт может быть вообще один, например, свой блог, ЖЖ, ЛИ или аккаунт на Яндексе.
Dimox: можно совместно продумать ТЗ и скинуться на кодинг.
Евгений Че: посмотри-подумай :-)
У меня в планах на начало февраля стоит этот плагин.
М… Может стоит к разработке совместно подойти, чтобы очередная бесполезная вещь не вышла?
Поднять Wiki, набросать схемки =)
Во, отлично! Надо еще народ привлекать, чтобы составить хорошее ТЗ и красиво реализовать. Короче, нужно объединять усилия =)
Народ на хабре, но я туда не пойду =)
Этим невменяемым всё равно не удастся объяснить, что такое WordPress…
С версткой нужна помощь?
Много народу не надо :)
Про OpenID ещё много Иван Сагалаев писал. А я сам сейчас без ссылки, т. к. пароль не вспомнил, вспоминать лень и хидер править тоже лень :) Но OpenID – клёвая штука, несомненно.
Надо ещё для wordpress и для textpattern написать.
Вообще идея хорошая, как только научусь писать плагины для вордпресса, войду в комманду :)
Владимир, а как поднять свой openID сервис ?
писать с нуля лень … может есть готовые реализации ?
не ставил wp 2.7 , думал там с openid порядок, видимо для них важнее дизайн админки чем опенид
У меня в ВП 2.7 включена авторизация по OpenID, так же включен плагин, который при авторизации через OpenID ЖЖ тащит с него юзерпик и подставляет вместо граватара. Эти два плагина входят в сборку Лекактуса, но второй я обновил – так он не требует изменений в теме оформления. Кроме того, в сборку входит и плагин, позволяющий подписываться собственным доменом, на котором ВП установлен. Это все лекактусовская сборка.
тест openid
Извини Володя что балуюсь тут. Почему то только на твоём сайте отрабатывает openid авторизация. Другие не хотят. ЖЖ тоже не хочет. Чуток попроверяю ещё.
Всё разобрался. Всё намного проще оказалось. Скоро будет пост :)
Теперь ник отдаётся, а емейл чего нет? =)
Работает через http://www.myopenid.com/
Все данные там заполнены. А блог емейл просит вобще? Я не уверен что блог запрашивает данные хоть какие то вобще. Потому как когда идёт запрос личных данных, myopenid предлагает передавать ли их. Тут я запроса не вижу.
Возможно, SRE этому плагину вообще не знакомо =(
Я в нём глубоко не ковырялся – то, что он скорее мертв, чем жив – видно издалека. Спасибо, что хоть как-то работает.
Пардон прогнал. Есть запрос. В профиле галку напротив емейла не поставил. Сейчас должно быть всё. Есть?
Сам видишь – и фотка появилась даже =)
Было бы время и желание. Остальное найдётся :)
С авторизацией решилось. Клиентская часть смотрю работает у тебя тоже не плохо как бы. Тему можно считать закрытой
Расскажи как сделал, а то я сам до конца не въезжаю как это настроить на стороне сайта и OpenID-провайдера.
http://gritsinger.com/server-avtorizacii-openid-na-sobstvennom-domene.html
смотрел? Там всего 2 действия. Зарегистрироваться на сайте и внести строчки в head
На блоге у меня последний пост посмотри. Там 2-а действия всего
Я так делал, работает ой не везде и ой не всегда ровно =(
Пример где не работает можно? Хочется испытать :)
Не сейчас, не сразу =)
На работе. Надо вспоминать.
Почитав спецификацию OpenID понял, что она ох как не простая. Не каждому под силу её реализовать правильно
Просто пока где пробовал, результат положительный. Время найдёт ошибки :)
Valentin, а для чего мета-тег, который содержит X-XRDS-Location? У меня он не прописан, и, например, на этом блоге без проблем.
Dimox, на этом блоге без проблем, а на другом могут быть проблемы. Это не моя прихоть, данные теги рекомендовал сервер авторизации. Я ему верю :)
Погугли X-XRDS-Location и понял, что после того как написал пост, нашел подобные посты. Пока сам не сделаешь глаза не видят.
Я перепробовал не одно решение под Друпал и Вордпресс, но пришлось всё же брать наиболее подходящее и переписывать под себя. Жалко, много времени потратил.
И где это можно увидеть? =)
Гут! Мы на rocID тоже планируем сделать openID-сервер.