Архив категории ‘администрирование’

Интеграция 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»
Метки:

Определение hCard владельца страницы

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

hCard – это микроформат, который выделяет из HTML-страницы данные о человеке. Выделяет в том смысле, что если страницу читает электронный мозг, то он может определить, что, например, является именем человека, что фамилией, а что – домашней страничкой. Пример hCard:

 <div class="vcard">
     <div class="fn">Василий Пупкин</div>
     <div class="org">Рога и Копыта</div>
     <div class="tel">495-564-1234</div>
     <a class="url" href="http://vasya.ru/">http://vasya.ru/</a>
 </div>

Эти данные будут одновременно и отображены на страничке и понятны роботу. Разобраться что есть что просто – по именам классов. fn – это имя, tel – телефон, а url – личная страничка Василия.

Представим, что этот hCard мы нашли на этой самой страничке Василия. И представим, что на этой же страничке находится несколько hCard его друзей. А нам нужно, чтобы робот мог определить, какой из них принадлежит владельцу странички, а какие – нет. Это нужно, например, если Василий указал свою страничку в качестве OpenID-идентификатора и робот хочет получить побольше информации о нём, чтобы Василию не пришлось заполнять многочисленные поля в профайле.

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

1. Поставить ссылку на саму страницу, на которой находится hCard и указать её класс как url и uid одновременно. Пример:

<span class="vcard">
<a href="http://daeq.ru/" class="url uid nickname">daeq</a>
</span>

2. Поставить ссылку на свои профили на других сайтах, используя для ссылки rel="me". Пример:

<span class="vcard">
<span class="nickname">daeq</span>
(<a href="http://daeq.ya.ru" rel="me" class="url">я на я.ру</a>)
</span>

Рекомендуется использовать оба способа сразу.

Роботу, чтобы определить, какой из hCard на странице является hCard её владельца, нужно просто найти тот, который удовлетворяет вышеописанным условиям.

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

Делаем свой сайт или блог OpenID-идентификатором

Суббота, ноября 24, 2007. Категории: администрирование, блог

OpenIDДля тех, кто ещё не знает, что такое OpenID:
OpenID – это протокол идентификации пользователя, позволяющий логиниться на любом сайте (поддерживающем этот протокол), помня при этом всего один пароль.

Многие социальные сети и блог-хостинги уже поддерживают OpenID. К примеру, если у вас есть аккаунт в livejournal, то вы можете идентифицироваться на других сайтах через OpenID, вводя в качестве идентификатора адрес своего журнала (myname.livejournal.com). Это очень удобно, и, несомненно, со временем подавляющее большинство сайтов будут поддерживать подобную идентификацию.

Но что, если вы не хотите привязывать свой идентификатор к какому-либо сайту или сервису? Проще простого. Если у вас есть блог, сайт или просто домен, который вы хотели бы использовать в качестве идентификатора, то осуществить это займёт не больше 15 минут. Вот что можно сделать:

1. Если вы уже зарегистрированы в livejournal.com, moikrug.ru или любом другом сервисе, предоставляющем OpenID, то ничего делать не нужно. Если нет – регистрируемся в любом провайдере OpenID (например, myopenid.com).
2. Идём на страничку вашего идентификатора (например, myname.openid.com, myname.livejournal.com и т.п.), открываем исходник страницы и ищем строку вида “<link rel=”openid.server” href=”адрес” />”.

3. Вставляем в блок head вашей странички, которую вы хотите сделать идентификатором, следующие строки:

  • “<link rel=”openid.server” href=”адрес” />” – ту, которую вы нашли перед этим
  • “<link rel=”openid.delegate” href=”адрес” />”, где адрес – это OpenID-идентификатор, предоставляемый вашим провайдером (например, myname.openid.com)

В итоге, на вашей страничке должно быть что-то вроде этого:

<head>
<!-- пропущено -->
<link rel="openid.server" href="http://www.myopenid.com/server" />
<link rel="openid.delegate" href="http://daeq.myopenid.com/" />
<!-- пропущено -->
</head>

Готово. Теперь вы можете идентифицироваться на других сайтах вашим собственным адресом. Кроме того, вы в любое время можете поменять OpenID-провайдера без изменения своего идентификатора.

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

Настроить почту на своём домене (GMail)

Четверг, ноября 15, 2007. Категории: администрирование, блог

Google Apps

С этой задачей сталкивается большинство людей, имеющих свой домен (для своего личного сайта, для проекта и т.п.). Многие хостинги предоставляют возможность создавать почтовые ящики на своём домене, некоторые люди сами администрируют почтовые сервера. Я же расскажу о том, как за 15 минут (если не спешить) прикрутить удобную, надёжную и быструю почту к своему домену.

Что вы получаете:

  • Ящик вида box@mydomain.com
  • Надёжность и скорость почты google
  • Возможность предоставлять ящики на своём домене другим людям
  • Спам-фильтр google
  • Поддержку POP, IMAP, SMTP, SSL и многих других страшных сокращений
  • Независимость почты от хостинга (вы можете его менять или вообще не хостить свой сайт, но почта на вашем домене у вас будет пока будет сам домен)

Что вам понадобится:

  • Доступ к управлению DNS записями вашего домена (часто предоставляется теми, у кого вы купили домен)
  • 15-20 минут времени (включая чтение этой статьи)

Итак, что нужно сделать:

1. Создаём аккаунт на Google Apps
2. Подтверждаем собственность домена (ссылка на подтверждение будет на главной странице (dashboard) после логина в Google Apps. Есть два вида подтверждения. Проще обычно залить файл с заданным содержимым на ваш сайт. Другой вариант – добавить CNAME запись для вашего домена.
3. Добавить MX записи для вашего домена (всё подробно написано в справке Google)
4. Активировать почту (Google проверит, всё ли вы правильно настроили. У меня заняло меньше минуты)

После этого можно создать поддомен вашего домена для почты (там будет находиться веб-интерфейс Gmail), либо пользоваться веб-интерфейсом на сайте Google Apps, либо включить POP в настройках почты и пользоваться вашим любимым почтовым клиентом.

Удачи.

Комментарии: 9»
Метки:
Entries (RSS)