Что же такое OpenID на самом деле?

Категория: эволюция сети Дата: января 25, 2008 / Комментарии: 16»


При обсуждении темы о масках в ЖЖ был поднят вопрос об OpenID, достаточно важный в свете разрастающегося вокруг OpenID шума. Что же такое на самом деле OpenID? Что он даёт пользователям и сервисам, а чего не даёт (несмотря на то, что многие думают иначе)?

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

OpenID позволяет людям получить уникальный идентификатор, который (если это требуется и если никто ничего не взломает) не может быть использован никем кроме его владельца. Сайтам OpenID предоставляет надёжный способ отличать один идентификатор от другого (ни Cookie, ни IP адрес такой возможности не предоставляют).

Также OpenID позволяет передавать и получать пользовательские данные, что также удобно как пользователю так и сайту.

На этом его возможности, в общем то, заканчиваются.

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

Почему-то распространено мнение, что пользователю, залогинившемуся по OpenID стоит доверять больше, чем пользователю, просто заполнившему форму “Имя, Емейл, Текст комментария”. Это не так. И это явным образом указывается в спецификации (SRE и AX).

OpenID не отменяет ни одну проверку пользователя, которую он проходит при обычной регистрации. OpenID со стороны сайта - это, грубо говоря, просто строка, введённая в поле “Ваше имя”, ежели такое поле было бы на сайте. Это пользователю он даёт возможность получить уникальный идентификатор (если хотите, имя), который не смогут использовать другие. Для сайта же ничего подобного OpenID не предоставляет. Это пользователь может получить некоторые гарантии своей уникальности, но не сайт. Со стороны сайта основываясь только на OpenID нельзя быть уверенным ни в том, что один пользователь использует только один идентификатор, ни в том, что один идентификатор используется только одним пользователем.

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

Конечно, можно использовать OpenID для составления белых списков, чёрных списков, уровней доверия и прочего, но в этом плане он ни чем не отличается от e-mail или IP-адреса.

Кратко подводя итог:
OpenID даёт сайту возможность надёжно отличать один идентификатор от другого (т.к. URL уникальны) и стандартным образом получать пользовательские данные
OpenID даёт пользователю возможность получить уникальное имя в сети и передавать сайтам свои данные стандартным образом.

Period.

Метки: ,

Видео о DataPortability

Категория: эволюция сети Дата: января 15, 2008 / Комментарии: 3»

Michael Pick из Smashcut Media создал интересный ролик, рассказывающий о переносимых данных. DataPortability - Connect, Control, Share, Remix. Это наше ближайшее будущее.

Метки: ,

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

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

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-идентификаторов в одного пользователя. Всё это можно дописать на основе вышеизложенного.

Метки:

Вышла новая версия 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-файл находится здесь.

Метки: , ,

Маски: Первый день

Категория: проекты Дата: декабря 20, 2007 / Комментарии: 11»

Не думал, что идея настолько понравится людям. Всем спасибо за отзывы.

После поста на хабре меньше чем за 15 часов на сайт пришло больше тысячи человек (по данным Google Analytics). Создано около 150 масок, написано больше 100 постов и больше 700 комментариев (на момент написания статьи уже 131 и 1050 соответственно). Не ожидал такой активности, честно.

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

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

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

Люди, пишите, как бы вам хотелось видеть развитие этой идеи. Я ведь всё сам не придумаю :)

Для тех, кто застал первоначальную версию, есть некоторые новости:

  • увеличилось юзабилити
    • при отправке комментария показывается рядом с формой маска, от лица которой комментируете
    • появились ссылки “надеть маску” возле их ников и в результатах поиска масок
    • теперь отображаются последние маски, от лица которых вы писали
  • появилась кое-какая статистика - количество картинок у каждой маски и количество совершённых действий (посты и комментарии) теперь показывается на карточке маски
  • что-то ещё менял, сейчас всего не припомнишь

Кстати, сайт переехал на свой отдельный домен. Теперь это maskas.ru.

На выходных будет серьёзная доработка сайта. Ждите. Оставайтесь с нами. Не выключайте фантазию :)

Метки: ,
Страницы: <<< 1 2 3 4 5 6 7 8 9 10 >>>
Entries (RSS)