Дмитрий Шейко
*авторизированный доступ


«Делаем стартап гостеприимным» или «Как использовать OpenID на своем сайте» [17/07/07]


Как использовать OpenID на своем сайте
Уверен, вам не раз подалась на глаза аббревиатура OpenID. Вполне возможно у вас сложилось мнение, что это эдакая модная штуковина, о поддержке которой все чаще заявляют различные популярные проекты. По большому счету так и есть, но зачем эта технология на самом деле нужна? Предположим, вы заядлый блоггер, у вас имеется учетная запись на wordpress.com, но случилось вам прочесть сообщение в чужом дневнике и возникло непреодолимое желание оставить автору комментарий. Но вот незадача – чужой дневник оказался на livejournal.com. Неужели только для того, чтобы оставить комментарий вам придется регистрироваться на «вражеском» блог-хостинге?! А вот и нет. В форме авторизации livejournal.com имеется малозаметная ссылка «Войти по OpenID». Вы переходите по этой ссылке, вводите свой идентификатор с wordpress (скажем, ivan.wordpress.com). Открывается «родной» wordpress.com и лукаво прищурившись интересуется у вас «Do you want to pass your identity to this “soup-admirers’ site”?». Вы скрепя сердцем жмете «Yes; just this time», после чего оказываетесь на той злополучной странице livejournal.com c формой добавления комментария. Но (!) на этот раз вы авторизованы на ЖЖ под своей «вордпресосвской» учетной записью. Наконец-то можно оставить комментарий. Не пройдет много времени как в адрес OpenID прозвучит очередное «Wow!», но уже от пользователя livejornal.com, спешащего вернуть вам ответ.

Как работает OpenID


OpenID – это децентрализованная система единой регистрации. Это несколько шире, чем заявлено на wordpress.com: «OpenID – это открытый стандарт, который позволяет вам авторизоваться на чужих сайтах, используя вашу учетную запись WordPress.com» :) Если вы зарегистрированы в проекте, являющимся, помимо прочего, провайдером OpenID, вы сможете авторизоваться под этой единственной учетной записью на любом сайте, поддерживающим OpenID. Звучит замечательно, идея – фантастика, но возникает резонный вопрос: «А много ли таких проектов, поддерживающих OpenID или это вопрос непредсказуемого будущего?». В принципе, не мало. Уже заявлено порядка 1200 сайтов, поддерживающих OpenID и каждый день прибывает 10-15 новых. Среди этих сайтов немало популярных проектов: Livejournal.com, Jyte.com, Vox.com. Wikitravel.org, Zooomr.com, Ma.gnolia.com, Movabletype, Iconbuffet.com, Basecamphq.com. Существуют модули интеграции для такого популярного ПО, такого как Wordpress, Joomla!, Plone, Drupal. MediaWiki, CakePHP, Symfony Framework. О поддержке технологии заявили Microsoft и AOL. Поддержка OpenID будет реализована в Firefox 3.0.

Но как использовать OpenID на своем сайте? Если вы собираете проект на фреймворке CakePHP или Symfony, вам достаточно настроить плагины CakePHP OpenID component и sfOpenIDPlugin соответсвенно. Если вы не используете фреймворк, но просто желаете привлечь пользователей лояльностью к регистрации на вашем проекте (быть может стартапе), проще всего воспользоваться маленькой библиотекой Simple OpenID PHP Class. В комплекте, доступном для скачивания помимо библиотеки, имеется скрипт примера, где в доступной форме показано как авторизовать пользователя посредством протокола OpenID. Единственная неприятность, с которой вы можете столкнуться – данная библиотека использует функции библиотеки расширения PHP Libcurl. Т.е. если ваш PHP собран с опцией --with-curl – все замечательно. Иначе использовать эту библиотеку едва ли получиться. Автор этого решения был вынужден использовать специфичные функции там где можно было бы обойтись более традиционными методами HTTP-запроса из-за того, что многие провайдеры OpenID требуют SSL-соединения.

Если же вы настроены более серьезно и собираетесь реализовать полноценное управление учетными записями пользователей в своем проекте, опираясь на популярные решения, такие как OpenID, LID (Light-Weight Identity) и Yadis воспользуйтесь библиотекой NetMesh InfoGrid LID PHP. Стоит также обратить внимание на PHP OpenID library. Однако в данном случае вам потребуется консольный PEAR-инсталлятор.

В заключении надо сказать, что имеется ряд нареканий к OpenID касательно уязвимости в безопасности. На мой взгляд, также необходимость чтения целостной HTML страницы для последующего анализа тегов микроформата – подход крайне неэффективный (в спецификации OpenID 2.0 запрашивается документ XRDS или Yadis-документ). Хотелось бы использовать REST, но на этот счет есть некоторые сомнения. Тем не менее, OpenID - как раз тот случай, когда замечательная идея все же работает. Так, что лично я буду рад, если смогу воспользоваться своей учетной записью OpenID на собранном вами новой оригинальном многообещающем проекте.

P.S. Вы можете обнаружить некорректную работу Simple OpenID PHP Class с аккаунтами LiveJornal. Ошибка чевидно в следующем: в спецификации сказано что для режима check_authentication требуется POST HTTP-метод.

Остается просто добавить в начало функции CURL_Request() (class.openid.php) следующую проверку

if(isset($params["openid.mode"])) $method = "POST";

P.S.2 Ко всему прочему также хотелось бы добавить. Есть любопытный сервис Sxipper. Они предоставляют плагин для Firefox. Пройдя регистрацию в нем вы получаете учетную запись OpenID и при авторизации на прочих проектах типа Livejournal вы сразу же получаете подтверждение подлинности.

Создать закладку Google slashdot YahooMyWeb Digg Technorati Delicious Забобрить эту статью! Добавьте на news2.ru




Дмитрий Шейко

ФИО: Дмитрий Шейко
Должность: программист
Ник: Korvin

Личные данные  Письмо автору

Yandex RSS
Получать обновления блога по Email




Мои публикации по теме

Как заставить AJAX читать между строк

Интерактивный грид своими руками
АОП на практике, или Как адаптировать проект и не затронуть систему

Аспектно-ориентированное программирование и PHP

Языки описания пользовательских интерфейсов

Заметки веб-программиста: инсталляция Apache+PHP4+MySQL под Windows (pdf)

Делаем визуальный редактор в HTML своими руками (pdf)

 

Miscellaneous

Add-on для PHPBB, показывает последние записи в форуме при наведении мышью через AJAX

Add-on для PHPBB, реализует простую архитектуру участия в стиле Web 2.0 на базе форума

 

 

 

PHPClasses

 

PHP Programming Innovation award winner
October 2005
Winner

 

 

Персональный сайт:

http://www.cmsdevelopment.com

 

 

Мои прочие блоги:

http://livejournal.com/~dsheiko/ 

Самиздат

http://zhurnal.lib.ru/s/shejko_d_p/ 


Избранное

Лучшая бесплатная CMS для персональных сайтов http://sapid.sf.net/, платформа веб-интеграции http://www.sitesapiens.ru

CMS - аналитика: 

 

http://www.cmswiki.com
http://www.cmswatch.com
http://www.cmswire.com/
http://www.gilbane.com/
http://www.cmsmatrix.org
http://www.cms-lists.org/
http://www.cms-forum.org/

http://www.oscom.org

http://www.contentmanager.eu.com/matrix.htm

http://business-site.ru

http://cmslist.ru

http://www.cmsinfo.ws/

http://cmsobzor.ru/ 

Standarts

http://www.w3c.org

http://www.oasis-open.org

http://www.iso.ch/iso/en/ISOOnline.frontpage

http://www.ietf.org/

http://xmlstds.xemantics.com -

Все XML-стандарты одним CHM 


Information Architecture

http://iainstitute.org/library/

http://argus-acia.com

http://www.iawiki.net/IAwiki

http://louisrosenfeld.com/

http://www.eleganthack.com/blog/

http://www.iaslash.org/ia/

http://www-106.ibm.com ..


PHP

http://phpclub.ru

http://php.com.ua

http://www.php.net

http://software-engineer.org

http://www.phpguru.org/


Apache

http://apache.org

http://apache.lexa.ru

http://asmodeus.com.ua/library/ web/modules/mod_rewrite.htm

 

Java-script

http://msdn.microsoft.com

 

UML

http://www.uml.ru

http://www.interface.ru/public/990804/uml4b.htm

 


количество читателей онлайн и всего
BLOGUS.RU
Рейтинг блогов

Вверх
Вернуться

Поиск
© Red Graphic Systems