Как стать автором
Обновить

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

Время на прочтение3 мин
Количество просмотров3.4K
Как использовать 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 на собранном вами новой оригинальном многообещающем проекте.

Оригинал статьи в PDF

P.S. Текущая версия Simple OpenID PHP Class некорректно обрабатывает пользователей ЖЖ. Лекарство: добавить в начало функции CURL_Request() (class.openid.php) следующую проверку:
if(isset($params[«openid.mode»])) $method = «POST»;

Теги:
Хабы:
Всего голосов 53: ↑51 и ↓2+49
Комментарии100

Публикации

Истории

Работа

PHP программист
148 вакансий

Ближайшие события