Архив категории ‘эволюция сети’

Интеграция OpenID в ваш сайт

Пятница, декабря 28, 2007. Категории: администрирование, эволюция сети

OpenID – несомненно, полезный механизм как для пользователей, так и для владельцев сетевых ресурсов.

Пользователям он даёт:

  • Возможность запомнить один логин и один пароль и использовать его везде
  • Не нужно каждый раз вводить одни и те же данные. В идеале каждый сайт будет требовать только ввода данных, специфичных именно для этого сайта
  • Не нужно регистрироваться. Хотя часто это недолго (несколько минут), но регистрироваться на каждом сайте напрягает

Для владельцев сайтов тоже есть преимущества:

  • Т.к. это удобнее пользователю, больше пользователей будет регистрироваться
  • Возможность получить данные пользователя, которые в другом случае он поленился бы вводить (хотя и не скрывает)
  • В перспективе – возможность обновления данных о пользователе (как контактной информации, так и информации о его связях, вкусах и т.д. и т.п.)

Благо, сейчас достаточно хороших библиотек для работы с OpenID и достаточно OpenID-провайдеров (в том числе многие социальные сети), чтобы эта фича была востребована на сайте.

Сейчас я расскажу и покажу, как за пару часов добавить поддержку OpenID к существующему сайту. Я не рассматриваю случаи, когда сайты построены на основе популярных движков (вроде WordPress или Drupal), для которых существуют плагины, делающие за вас всю работу. Речь будет идти о сайте в самом общем случае.

Эту статью я решил написать после подключения OpenID к своему сайту maskas.ru, на котором можно посмотреть рабочую версию того, что я сейчас покажу.

Работать это, как и сам сайт, будет на PHP с использованием библиотеки PHP OpenID Library.

Предполагается, что на сайте уже есть таблица с пользователями, которая используется как основное хранилище данных о них.

Архив со всеми скриптами, которые будут использоваться, можно скачать с меня: здесь.

Итак, приступим.

1

Для начала скачайте библиотеку и перенесите папочку Auth туда, где php-скрипты смогут найти её при использовании include.

2

Теперь создадим таблицу связей OpenID-идентификаторов с пользователями.


CREATE TABLE `openid_user_ref` (
`openid` varchar(255) NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`openid`)
)

3

Нужно добавить куда-нибудь на сайт (скорее всего, туда же, где находится форма логина) форму с одним полем ввода для OpenID-идентификатора, перенаправляющую нас на страницу, на которой будет происходить проверка подлинности идентификатора. Выглядеть это будет примерно так:

<form method="get" action="openid_verify.php">
OpenID: <input name="openid_url" type="text" />
</form>

Для лучшей узнаваемости можно добавить к полю ввода картинку вроде такой.

4

Переписываем файлы из моего примера в корень своего сайта (потом вы сможете их поместить куда нужно, придётся только кое-где поменять пути). Файл openid_verify.php вам трогать, скорее всего, не придётся – он занимается тем, что проверяет правильность введённого OpenID-идентификатора и перенаправляет пользователя на сайт OpenID-провайдера для проверки. В нём вам может понадобиться изменить только список запрашиваемых данных пользователя здесь:

$sreg_request = Auth_OpenID_SRegRequest::build(
// Required
array('nickname'),
// Optional
array('fullname', 'email','gender'));

Файл openid_complete.php уже интереснее. На него пользователь попадает после проверки провайдером и здесь совершаются все необходимые действия по добавлению пользователя в базу или логину. Я написал просты заглушки на нужные функции (создания пользователя, его логина в систему), которые вам нужно будет заменить на что-то более подходящее.

В моём примере логика такая: если OpenID-идентификатор нам неизвестен, мы автоматически создаём нового пользователя с данными, предоставленными OpenID-провайдером. Если идентификатор известен – логиним пользователя.

При создании пользователя используется ник, полученный от OpenID-провайдера. Если ник не получен или полученный ник не подходит (что проверяется функцией check_nickname), то он генерируется из OpenID-идентификатора.

Список данных о пользователе, которые теоретически можно получить от провайдера, достаточно скромен (т.к. используется расширение SRE, описанное в статье обмен пользовательскими данными в OpenID), но все основные данные получить можно.

Для начала вы можете просто распаковать пример в какую-либо папку на сервере и запустить – он работоспособен и сам по себе (особенно если указать правильные параметры для подключения к MySQL в файле openid_common.php). После замените заглушки по созданию пользователя и логину на подходящие для вашего сайта функции и готово – пользователи могут регистрироваться и заходить на ваш сайт при помощи OpenID.

Примечания:

Если вы используете библиотеку под Windows, то вам, скорее всего, нужно установить переменную Auth_OpenID_RAND_SOURCE из файла CryptUtil.php в null.

Не забывайте чистить директорию со временными файлами (путь к ней указывается при создании объекта Auth_OpenID_FileStore). Если ваш сайт достаточно посещаемый, то через время она может начать занимать заметное место на диске.

Я не рассматривал здесь вопрос прикрепления OpenID-идентификаторов к существующим пользователям и объединения OpenID-идентификаторов в одного пользователя. Всё это можно дописать на основе вышеизложенного.

Комментарии: 18»
Метки:

Вышла новая версия APML for WordPress

Пятница, декабря 21, 2007. Категории: эволюция сети

Matthias Pfefferle написал новую версию плагина, создающего APML-файл, используя тэги и категории, в которые вы пишите на своём блоге.

Теперь это не отдельный файл, а полноценный плагин. Текущая версия поддерживает категории WordPress, родные тэги WordPress, Ultimate Tag Warrior и Simple Tagging.

Плагин автоматически создаёт страницу по адресу http://ваш_блог/apml и прописывает ссылку на него на страницах блога.

Скачать плагин можно с сайта WordPress (http://wordpress.org/extend/plugins/apml/).

Мой APML-файл находится здесь.

Нет комментариев »
Метки: , ,

Blogger включил OpenID-комментарии на всех блогах

Пятница, декабря 14, 2007. Категории: эволюция сети

Недавно я писал о том, что блог-сервис Google Blogger начал тестирование комментариев с логином с помощью OpenID.

Тестирование заняло две недели, и вот теперь эта фича доступна на всех блогах.

Blogger OpenID comments
Чтобы включить возможность владельцам OpenID-аккаунтов комментировать на вашем блоге достаточно в настройке “Кто может комментировать” выбрать “Зарегистрированные пользователи”, что теперь включает в себя и пользователей, залогинившихся под OpenID.

Нет комментариев »
Метки: ,

Начало войны социальных платформ?

Четверг, декабря 13, 2007. Категории: эволюция сети

Ещё не успел затихнуть первоначальный шум о платформе для социальных сетей от Google по имени OpenSocial, как одна из крупнейших социальных сетей FaceBook открыла свою платформу для использования на сторонних сайтах.

После появления OpenSocial велись разговоры о присоединении FaceBook к платформе от Google, но, как видно, здесь пошли другим путём.

Теперь знаменитые пользовательские приложения FaceBook можно будет запускать и на других сайтах, которые станут использовать платформу.

Видно, всё идёт к глобализации социального графа. И впереди крупные компании, а не сетевое сообщество, что было бы логичнее. Конечно, сложно представить, что подавляющее большинство социальных сетей будет использовать чужую платформу как основу для взаимодействия с другими сетями. Но возникновение открытых социальных платформ говорит о том, что сеть движется в правильном направлении.

И когда наконец появится техническая возможность создать децентрализованную и вполне функциональную социальную сеть, пользователи уже будут к этому готовы и их не придётся долго убеждать.

По этому поводу можно упомянуть молодой проект DiSo, целью которого является создание открытой децентрализованной социальной сети на базе WordPress. В проекте участвуют создатели расширений к WordPress, добавляющих поддержку OpenID, XFN и других микроформатов. Именно по этому пути предполагается строить социальную сеть в проекте.

Количество платформ для взаимодействия социальных сетей всё увеличивается. Но какая-то из них должна оказаться лучше других. И я уверен, что это будет наиболее открытая из них.

Нет комментариев »
Метки: ,

OAuth – авторизация сервисов на сервисах

Понедельник, декабря 10, 2007. Категории: эволюция сети

OAuth
У многих дорогих авто в комплекте есть специальный ключ, который вы можете дать парковщику. С этим ключом нельзя проехать больше нескольких километров, нельзя открыть багажник или посмотреть адресную книгу телефона в машине. Это замечательная идея.
Описание с сайта oauth.net

OAuth – стандарт для аутентификации и получения доступа одними сервисами к данным других. Эта идея не нова. Похожие системы существуют у многих крупных и не очень сервисов. Google AuthSub, AOL OpenAuth, BBAuth Yahoo, Facebook Auth. Но пока никто не создавал стандарт, который позволит существенно повысить взаимодействие между сервисами в сети.

4 декабря 2007 года была принята спецификация OAuth 1.0.

OAuth предназначен для предоставления пользователем доступа к своим данным на одном сервисе другому сервису. Если вы хотите дать некой социальной сети доступ к адресной книге вашего почтового сервиса чтобы он мог поискать ваших знакомых, вам не обязательно предоставлять свой логин и пароль для почты этому сервису. Ведь можно предоставить доступ только к адресной книге и ни к чему больше. Именно для таких целей OAuth и создаётся.

Принцип его работы достаточно простой (и он во многом повторяет принцип работы систем API, ссылки на которые даны выше). Если один сервис (клиент) хочет получить доступ к вашим данным на другом сервисе (сервере), поддерживающем OAuth, то он запрашивает у сервера ключ, перенаправляет вас на сервер чтобы вы разрешили доступ к данным (авторизировав полученный ключ) и далее с помощью авторизированного ключа может получить данные, которые он запрашивал, и запрос на которые вы подтвердили.

В принципе, после авторизации клиент может не только запрашивать ваши данные, но и изменять данные на сервере. Т.е. делать всё, что позволит ему пользователь и сервис, предоставляющий API.

Преимущество такого стандарта перед существующими API в том, что сервисам, которые хотят предоставлять свои данные по требованию, будет проще это API писать (т.к. существуют серверные библиотеки на разных языках), а сервисам, которые хотят данные получать, будет проще это сделать благодаря стандартизации процесса.

Стандарт не определяет сам процесс получения данных. Он определяет только процедуру авторизации. Остальное остаётся на усмотрение сервиса, предоставляющего данные. Также на его усмотрение он может потребовать различных механизмов проверки подлинности (подписи). Существуют рекомендованные механизмы (HMAC-SHA1, RSA-SHA1), но можно использовать и другие.

Список сервисов, поддерживающих OAuth, пока невелик. Обновлённую версию можно найти в вики.

Набор библиотек для OAuth внушительнее, чем список использующих его сервисов. Доступны библиотеки на PHP, Ruby, Python, Java, C# и Perl. Ссылки на них можно найти здесь: http://oauth.net/code/

У OAuth, как и OpenID, на мой взгляд, большое будущее. Стандартизация механизма обмена данными между сервисами требовалась уже давно.

Комментарии: 5»
Метки: ,
Страницы: <<< 1 2 3 4 5 6 >>>
Entries (RSS)