Люди не очень любят регистрироваться. Это же нужно (в общем случае) придумать логин и пароль, зайти в свою почту, дождаться письма, открыть его, перейти по ссылке активации аккаунта, а потом еще этот логин с паролем не забыть. Но ведь уже давно есть способ, с помощью которого все эти шаги не нужны. Более того, не нужно вообще ничего вводить с клавиатуры, 2 щелчка мышью и все, человек зарегистрирован.



Какой самый распространенный элемент в todo стартапов? Думаю, что-то вроде этого: «В планах — сделать вход по OpenID». Почему этого не делают? Потому что как-бы незачем. Никто про OpenID не знает, никому он не нужен. У меня сложилось впечатление, что вход или регистрацию по OpenID обычно делают для того, чтоб показать технологическую продвинутость проекта. А ведь OpenID может быть крайне полезной штукой, упрощающей людям жизнь и увеличивающей число пользователей ресурса. Дальше — мое видение того, как правильно применять эту технологию.

Факты


Для начала — факты:
  1. Пользователи почты yandex.ru, rambler.ru и gmail.com в сумме покрывают очень большой процент пользователей рунета. Из почтовых сервисов тут не хватает только mail.ru.
  2. Yandex.ru, rambler.ru и gmail.com являются провайдерами OpenID 2.0.
  3. Для аутентификации через OpenID 2.0 не нужно вообще ничего вводить с клавиатуры, если сайту известен провайдер OpenID и пользователь авторизован у этого провайдера. В OpenID 2.0 адрес сервера един для всех пользователей (в url'е нигде не фигурирует имя пользователя).
  4. Пользователи не знают (и не хотят знать), что такое OpenID. Ну может 1% где-то слышал, что это есть такая непонятная штука для гиков.

Что из этого следует


В России (и в СНГ) вполне можно учитывать только 3х провайдеров OpenID: вышеупомянутых яндекс, гмейл и рамблер. Если предоставить пользователям выбор из этих 3х провайдеров, то с большой долей вероятности где-нибудь у человека будет аккаунт. Пользователь выбирает своего провайдера из этих 3х (1 щелчок мышью) — у сайта теперь есть информация о том, какой url использовать для аутентификации по OpenID. После этого можно провести обычную процедуру аутентификации по OpenID. Если пользователь авторизован у провайдера, то он подтверждает аутентификацию (еще 1 щелчок мышью). Если нет, то авторизуется (это у всех по-разному, в лучшем случае — 1 щелчок мышью, логин и пароль подставил браузер), потом подтверждает аутентификацию.

Что мы имеем: первичную аутентификацию в 2 щелчка мышью (если пользователь авторизован в своей почте). При этом сайт может пользователя или зарегистрировать, или авторизовать. Дополнительные данные для регистрации (если необходимо) сайт может получить через SREG, hCard, ax, что-то можно выудить из логина openid (для всего этого со стороны пользователя не нужно выполнять никаких действий). Если что-то нужно заполнить еще, то тогда уже спрашивать у пользователя дальше. Заметьте, спрашивать нужно будет потенциально меньше, чем при обычной регистрации.

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

Интерфейс


Теперь насчет интерфейса.

Мне кажется, учить пользователей, что такое OpenID — дохлый номер. И стоит исходить из того, что даже просто употребление незнакомого слова «OpenID» может отпугнуть обычного человека. У среднего пользователя есть почта и аккаунт во вконтакте или на одноклассниках, все. В том, что моя сестра не хочет въезжать в какие-то непонятные штуки со странными названиями (такие, как OpenID), нет ничего плохого, это абсолютно нормально. Большинство людей, думаю, вообще никогда не узнает, что такое OpenID. Из этой предпосылки предлагаю и строить пользовательский интерфейс.

Вот мой вариант такого интерфейса:


Собственно говоря, это и есть форма регистрации/авторизации на сайте pip.ec. Пользователю не нужно проверять почту, активировать аккаунт, придумывать логин и пароль. Более того, в удачном случае не нужно вообще ничего вводить с клавиатуры, 2 щелчка мышью и все, человек зарегистрирован.

Но все это теория, которая может вызвать разные вопросы (не испугаются ли люди перехода на другой сайт, будут ли нажимать «авторизовать» и т.д.), на которые ответить может только практика. Так что же на практике?

Практика


Кроме регистрации по OpenID на сайте pip.ec сделана и возможность обычной регистрации. Статистика такая: с помощью OpenID зарегистрировано больше людей, чем обычным способом. На сайте нет ни единого упоминания слова OpenID. Людей, регистрирующихся обычным способом и имеющих почту на гмейле, яндексе или рамблере — вообще единицы. Из тех, кто регистрируется обычным способом, половина — пользователи mail.ru.

Выводы


Вывод из всего этого: OpenID 2.0 при правильном подходе упрощает жизнь пользователям и увеличивает число регистраций. В нем нет ничего гиковского и маргинального в том смысле, что пользователям совершенно не обязательно знать, что у вас регистрация-авторизация происходит через OpenID.

Реализация, технические подробности


Насчет реализации. Во-первых, небольшная справка, адреса провайдеров openid (уберите знаки подчеркивания):

Google: _https://www.google.com/accounts/o8/id
Yandex: _http://openid.yandex.ru/
Rambler: _http://rambler.ru/

Во, вторых, насчет библиотек для работы с openid. Уверен, что для разных языков есть множество библиотек, поддерживающих OpenID 2.0, если в комментариях их напишут — сюда добавлю. У меня же все написано на джанго, код немного специфичный и в отдельное приложения я его не выделял. Для джанго предложил бы попробовать новый проект, который написал Александр Коваль (сам не пробовал), или вот это хорошее приложение: django-authopenid, или вот это: scipio.

В-третьих, всем интересующимся очень рекомендую блог и форум про OpenID у Ивана Сагалаева (который, к слову, тоже грозится зарелизить в скором времени зарелизил правильный openid-консумер для python/django). Если что-то про OpenID не ясно, почитайте оттуда статью: OpenID: мифы и суеверия, на нее уже была как-то ссылка на хабре.

Все, что я тут понаписал — далеко не новость, просто решил все немного систематизировать и донести до большей аудитории. Дело в том, что да, это все вроде не новость, а проектов, использующих описанный подход, не видно у нас.

И еще, обращение к команде mail.ru. Вдруг кто-то из них статью прочитает. Пожалуйста, станьте провайдером OpenID 2.0. Рано или поздно разработчики просекут фишку и станут более массово делать сайты с тремя кнопками «яндекс, гмейл, рамблер». Всем: и mail.ru, и пользователям, и разработчикам будет лучше, если вместо 3х кнопок будет 4: «яндекс, гмейл, мейл, рамблер».

Если вам тоже кажется, что было бы здорово, чтоб mail.ru стал провайдером OpenID 2.0, можно еще написать побольше писем в техническую дирекцию mail.ru, адрес есть тут: corp.mail.ru/contacts.html