17.02.08 23:57

OpenID, Яндекс

Имею удвольствие сообщить веб-сообществу, что мы недавно вдохнули вторую жизнь в наш яндексовый OpenID-сервер -- http://openid.yandex.ru/. Хотя надо сказать, что во время первой его жизни не так уж и много людей знало, что в Яндексе он вообще есть, в связи с чем я хочу про него потрепаться немножко подробней.

OpenID-сервер работает у нас уже довольно продолжительное время, хотя, надо признаться, был он довольно покинутым: поддерживал только первую версию OpenID, не предоставлял никаких дополнительных возможностей и, в общем-то, не имел планов развития. Это меня, как большого любителя всей этой технологии, немножко огрочало. И вот месяц-другой назад у меня в группе появился новый программист -- Володя Епифанов -- на которого я и решил свалить написание нового сервера. Он с этим успешно справился, и сейчас openid.yandex.ru это:

OpenID 2.0
Новая версия протокола, доработанная и, на самом деле, в последнее время превалирующая.
Поддержка SRE и микроформата hCard
Через SRE и hCard сайты, на которые логинится пользователь, могут узнавать о нем дополнительную информацию. Сейчас это самый минимум -- никнейм (он же логин), однако и это уже приятно работает. Например, если оставить комментарий на Blogger.com, подписываясь своим OpenID, то Blogger сразу подставит ваш яндексовый логин в качестве имени.
Делегация через Я.ру
Помимо адреса http://openid.yandex.ru/username, который автоматически есть у всех пользователей Яндекса, те, у кого есть страница на Я.ру, могут подписываться своим красивым коротким адресом: username.ya.ru
Модные технологии
Вряд ли кого-то уже должно удивлять, что сервер реализован на Django :-). В общем-то, там пока и кода практически нет, но тут это плюс скорее в том, что мы сможем его быстро и легко развивать. Кстати, сам протокол реализован де-факто стандартной библиотекой python-openid.

Отдельного упоминания заслуживает делегация через Я.ру. Легко заметить, что запрашивая этот адрес в браузере, вы в результате цепочки редиректов оказываетесь на странице с URL'ом типа http://username.ya.ru/?ncrnd=1971, которую OpenID-консумеры и считают финальным "правильным" адресом пользователя. Помимо того, что он уродлив, он просто не может служить идентификатором, потому что его банально невозможно указать еще раз: ncrnd всегда будет разным :-). Аккуратное откручивание этой штуки заняло довольно много времени и потребовало изучения самых тайных закоулков OpenID-спецификации. Большое спасибо ребятам, обслуживающим HTTP-сервер на Я.ру, за сотрудничество и терпение!

На некоторых сайтах, кстати, авторизация через username.ya.ru таки не работает, но мы работаем над этим.

Планы

Мне очень хочется постараться, чтобы OpenID развивался как можно быстрее и распространялся шире. Поэтому у нас есть некоторое количество планов на развитие нашего сервера.

  1. Мы видимо будем расширять количество информации, которую выдаем со страницы пользователя. Мы, конечно же, не можем взять и автоматически раздать всем email'ы, фамилии и имена всех пользователей, поэтому тут потребуется аккуратность и отдельный интерфейс, чтобы пользователи сами могли разрешать, что показывать.

  2. Напишем некоторое количество текста, объясняющего, что это все такое, зачем это надо пользователю, чем чревато.

  3. Есть интересная идея придумать (или найти придуманный) протокол, которым Яндекс сможет сообщать целевому сайту относительный уровень доверия пользователю. Сейчас у сайта, который принимает яндексового юзера, есть уверенность только в том, что это не робот, потому что у нас есть CAPTCHA при регистрации. Но ведь мы на стороне сервера знаем, какими сервисами пользуется юзер, а значит можем прикинуть, что если пользователь активно пишет в свой ярушный блог и регулярно загружает фотки, то это скорее всего не спамер, а нормальный сетянин.

  4. Я хочу обратиться ко всем в рунете, кто делает OpenID-логины. В большинстве случаев сейчас OpenID логин выглядит очень по-гиковски, и нормальным людям его показывать нельзя. Но есть и исключения типа формы на блоге Евгения Степанищева.

    В идеале пользователю вообще не желательно показывать слова "OpenID", а давать понять, что он может просто залогиниться своим логином с другого известного сайта. Для западного интернета такими узнаваемыми провайдерами являются AOL, Yahoo. У нас -- ЖЖ, Лайв Интернет, Мой Круг и теперь вот Яндекс. Я думаю это важно, потому что у Яндекса пользователей много, и это, в основном, как раз не гиковская аудитория. Поэтому призываю всех делать формочки, в которых пользователь может выбрать букву "Я", вписать свой логин, а формочка уже сама сделает из него http://openid.yandex.ru/username.

Комментарии: 50 (feed)

  1. Viačasłaŭ Radzivonaŭ

    А я как раз недавно соскочил с яндексовсого OpenID из-за недостатка функциональности (http://slaver.info/internet/myopenid.html) :(

  2. zencd

    я тоже хочу обратиться ко всем в рунете: давайте уже не только сервера поднимать, но и принимать комментарии через эту технологию

    хорошо хоть blogspot.com подтянулся из крупных

  3. Салихов Ильяс

    Да, OpenID — это чрезвычайно удобно, и не так уж сложно реализуется и внедряется.

  4. Денис Радченко

    Молодцы! Самое важное - популяризировать подобные технологии в массах. Очень надеюсь, что Яндекс станет локомотивом OpenID в России. Теперь осталось ждать продвижения Яндекс Jabber ;)

  5. Gregg

    О, теперь я понял как происходит авторизация по емейлам gmail, yahoo, msn, aol и facebook на buxfer.com

  6. Artemy Tregubenko

    Нашему МирТесен было бы очень приятно, если б яндекс через SRE отдавал еще и email с именем : )

    В плане реализации SRE на провайдере имхо очень удобен интерфейс https://pip.verisignlabs.com/

    А ещё php-openid нехорошо себя ведёт с моим адресом: требует исключительно yadis content-type, и получает отлуп. Приходится дописывать адрес конкретной страницы...

  7. grssnake

    Отличная новость!
    а что теперь будет с OpenID Моегокруга?

  8. Иван Сагалаев

    а что теперь будет с OpenID Моегокруга?

    Он останется работать. Хотя там надо будет во-первых подточить, чтобы к адресам не добавлялось nocookiesupport=yes, а потом он, возможно, тоже будет ссылаться на openid.yandex.ru. Правда, для этого нам надо доточить уже openid.yandex.ru, чтобы он понимал некий специальный класс пользователей, которые на МоемКруге могут регистрироваться с email'ом в качестве логина, не регистрируясь на Яндексе.

  9. Иван Сагалаев

    Нашему МирТесен было бы очень приятно, если б яндекс через SRE отдавал еще и email с именем : )

    Будет, будет :-).

  10. http://bougakov.livejournal.com/

    Не надо преувеличивать сложность OpenID в глазах юзера - у меня по OpenID прошли регистрацию 11 сотен мамашек из ЖЖ-коммьюнити malyshi и ru_perinatal - http://lj.bougakov.com/table/login/

    99% из них - ну совсем не geeks.

  11. http://antonm.livejournal.com/

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

  12. Иван Сагалаев

    Мой сайт вряд ли показателен, потому что он как раз для гиков :-). Которым нравится читать про OpenID, поэтому они знают, что это.

    Для пользователя OpenID сложнее тем, что это новое понятие, про котороне он еще ничего не знает, в том числе и того, что это "не сложнее email". Заметьте, в предыдущем примере у bougakov есть ссылка, где пользователям дается форма логина, оперирующая уже известным понятием: "введите ваш ЖЖ логин". И вот она проблем действительно не вызывает.

  13. Aleksey Aleksyeyev

    На некоторых сайтах, кстати, авторизация через username.ya.ru таки не работает, но мы работаем над этим.

    То-то мне один человек жаловался, что не может зайти на мой блог по openid от Яндекса

    Я хочу обратиться ко всем в рунете, кто делает OpenID-логины. В большинстве случаев сейчас OpenID логин выглядит очень по-гиковски, и нормальным людям его показывать нельзя. Но есть и исключения типа формы на блоге Евгения Степанищева.

    Этот блог к исключениям, к сожалению не относится ;) Я использую вот этот плагин для WP, и он предоставляет практически такую же форму. Он, правда, давно не обновляется, и там есть только LJ и DJ, но вроде бы в интернете есть сборки с большим количеством сервисов (самому пока добавить было лень).

  14. daemith

    не могу не испробовать, как оно всё

  15. http://antonm.livejournal.com/

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

  16. Сергеев Сергей

    да и ЖЖ не принимает OpenId вида username.ya.ru
    а вообще побольше поддержки открытых технологий и дальше, спасибо :)

  17. Иван Сагалаев

    Ну значит, пользователю это придётся объяснить, перечисление сайтов проблему то не снимает

    Конечно придется объяснять, этого никто не отменяет. Но есть два способа: один жесткий, когда "не понял, не прошел", а другой мягкий, когда у пользователя уже все получилось со своим привычным аккаунтом, ему все понравилось, у него родилось "warm fuzzy feeling", и тогда уже ему начинают рассказывать, что это такое.

    Перечисление сайтов снимает проблему первого знакомства.

    это сейчас их по пальцам можно пересчитать, а чего будем делать потом?

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

    Я ни в коем случае не предлагаю это решение, как постоянное.

    на деле форма работала через OpenID, только вот там про это не было сказано не слова.

    Ну это уже ошибка с другой стороны. Примечание и fallback на "любой OpenID" оставлять, конечно, нужно.

  18. Иван Сагалаев

    да и ЖЖ не принимает OpenId вида username.ya.ru

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

  19. Vladimir Epifanov

    да и ЖЖ не принимает OpenId вида username.ya.ru

    Только что у себя в ЖЖ отставил коммент ярушным аккаунтом. Работает. :-)

  20. http://antonm.livejournal.com/

    Конечно придется объяснять, этого никто не отменяет. Но есть два способа: один жесткий,
    когда “не понял, не прошел”, а другой мягкий, когда у пользователя уже все получилось со
    своим привычным аккаунтом, ему все понравилось, у него родилось “warm fuzzy feeling”, и
    тогда уже ему начинают рассказывать, что это такое.

    Я боюсь, что это только лишнюю путаницу добавит. Так как “warm fuzzy feeling” появится скорее-всего именно на выбор провайдера и ввод своего ника, а не на какой-то там OpenID. На мой взгляд, если бы на сайте OpenID провадеров были на видном месте ссылка на текст с картинками про OpenID с примером простой текстовой формы где написано чего туда надо вводить, то научившись пользоваться одной такой формой на одном сайте, пользователь без проблем ею воспользуется на другой. Форму же со списком провайдеров на всех сайтах единообразно сделать не получится, так как список провайдеров будет разный. При этом, вероятно, у многих пользователей произойдёт срыв шаблона.

  21. Иван Сагалаев

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

    Согласен, это проблема... Подумаю над этим.

  22. Сергеев Сергей

    Только что у себя в ЖЖ отставил коммент ярушным аккаунтом. Работает. :-)

    У меня заработало только вида http://openid.yandex.ru/username , может залогинится получилось раньше? :)

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

    Будем надеятся, а пока при вводе OpenId ввиде http://username.ya.ru в URL`е вот такое сообщение
    openid.error=This+server+cannot+verify+the+URL+u%27http%3A%2F%2Fopenid.yandex.ru%2Fusers%2FGuruGray%27
    сама же страница ничего не выводит.

  23. AlannY

    Молодцы! Как-нибудь обязательно попробую :-)

  24. Julian Tarkhanov

    Сервер OpenID поднять каждый горазд - вот употреблять openid когда будете? Известно же что у OpenID проблема с малым количеством сайтов которые его допускают, а не с количеством провайдеров.

  25. l-sub

    OpenID рулит. :) Еще бы действительно, Jabber поразвивать немножко. :)

  26. Иван Сагалаев

    вот употреблять openid когда будете?

    Планы есть, правда пока неконкретные. По сути, есть два пути:

    • каждый конкретный сервис будет разрешать, например, комментарии с OpenID-подписью, и будет делать это собственными силами
    • интегрировать OpenID в общеяндексовую авторизационную систему

    Первое не так интересно, как второе, но второе сложнее и дольше. Посмотрим, как пойдет.

  27. http://i-love-python.livejournal.com/

    я конечно зануда, но python-openid пока что не включена в стандартную библиотеку Питона, поэтому называть ее "стандартной" несколько преждевременно. Или в Python 3.0 она уже есть?

  28. Иван Сагалаев

    Я написал "де-факто стандартной". Для реализации OpenID в Питоне это действительно так.

  29. leksey

    Но есть и исключения типа формы на блоге Евгения Степанищева.

    почему бы и тут также не сделать? и рекомендовать тиражировать и реализовывать именно такую формочку, приучая юзера

    p.s. не понял, почему сообщение не отправилось, после того, как подтвердил авторизации на опенайди-сервера яндекса. вместо этого просто заполнилось поле веб-сайт. а текст сообщения просто похерился

  30. Иван Сагалаев

    Здесь мне очень не хочется копаться в PHP-коде. Я периодически возвращаюсь к поиску какого-нибудь удачного плагина, но пока не нашел.

  31. http://id.rambler.ru/users/kkapp/

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

  32. Иван Сагалаев

    Тут мы не открываем ничего нового. Достаточно зайти к нам на регистрацию пользователей и начать вбивать логины: там тоже напишут, какие заняты.

    P.S. Оказывается и на Рамблере есть OpenID сервер! :-). Не знал, к своему стыду...

  33. http://id.rambler.ru/users/kkapp/

    Ммм. Считайте меня параноиком, но это баг :)

  34. Иван Сагалаев

    Но как иначе? Поскольку зарегистрировать пользователя с занятым логином нельзя, то по этому факту всегда можно определить существование логина. В регистрации на Рамблере точно так же мне сказали, что логин "maniac" занят.

  35. http://meatreach.netliberty.ru/

    Формочка - это, конечно, хорошо, но не показывать юзеру слова OpenID - значит отсекать провайдеров, которых кто-то не считает "главными" (не говоря уже про standalone блоги). А OpenID - он ровно про другое.

  36. Иван Сагалаев

    Я соглашусь, что не показывать совсем -- неверно. Конечно нужно. Но там, где пользователь сам их ищет. Мне нравится вариант, когда слово OpenID написано в открывающемся select'е: юзер уже пошел искать что-то свое, когда понял, что предложенное по умолчанию не подходит.

    А вот про то, что "OpenID ровно про другое" соглашусь не до конца. Да, децентрализация -- одна из неотъемлемых фич. Но для большинства юзеров все же не главная. Им в первую очередь важно, что они могут не придумывать и не запоминать еще один логин с паролем. А то, что они могут сознательно выбирать, кто будет контролировать их идентификационную информацию, большинство беспокоит далеко не так сильно, как нас, гиков. Что, наверное, печально, но тем не менее...

  37. altmind

    воодушевляет. надо попробовать

  38. l-sub

    После обновления появилась интересная проблема:
    В коде моей страницы на http://Lebedew.ru содержатся волшебные строки:

    link rel="openid.server" href="http://openid.yandex.ru/server.xml"
    link rel="openid.delegate" href="http://openid.yandex.ru/users/яндекс_логин"

    Так вот, раньше в качестве моего имени везде автоматически подставлялся именно Lebedew.ru а не логин яндекс, что меня полностью устраивало.

    Сейчас нет. Отображается логин яндекса в-основном. Что делать?

  39. Иван Сагалаев

    В принципе, это зависит от сайта, который авторизацию спрашивает. У него есть и URL, который вы пишете, а теперь еще и никнейм, который туда приходит с openid.yandex.ru в виде логина. Хотя обычно все выбирают именно никнейм... Сделать с этим что-то можно с двух сторон. С одной стороны можно убеждать те сайты, что полученный автоматически никнейм нужно давать редактировать. С другой (нашей) стороны его изменить никак пока нельзя, но мы работаем над этим.

  40. Dmitriy A Lebedev

    Тест - как отображается результат через другие OpenID-серверы. Например, pip.verisignlabs.com.

  41. der Igel

    Приветствую!

    Использую библиотеку dotneopenid (http://code.google.com/p/dotnetopenid/).

    C OpenID сервером Яндекса есть проблемы, описаны в тикетах:

    Проблемы решаются со стороны клиента (библиотеки), но налицо проблема со стороны яндексовсого сервера.

  42. Иван Сагалаев

    Спасибо за сообщение! Я посмотрел на 71 баг, похоже это действительно легко можно починить. Про 72-й пока не знаю, с заголовком Expect мы еще не сталкивались.

  43. Данил Семеленов

    При запросе SRE данных c яндексового OpenID сервера они возвращаются в кодировке cp1251. Баг или фича?
    Получается как-то не совместимо с остальными провайдерами OpenID, у которых принято возвращать в utf8.

  44. Данил Семеленов

    Может быть потому что в заголовках запроса у меня стоит
    Accept-Charset: windows-1251,utf-8;
    Сначала 1251, затем utf8.

    Все же мне кажется лучше железно возвращать в utf8, т.к. нет возможности угадать в какой кодировке пришел ответ.

  45. Иван Сагалаев

    Попробовали воспроизвести сейчас -- не получилось. Что с Accept-Charset, что без, все выдается в utf-8 всегда. А как вы windows-1251 получаете?

  46. Данил Семеленов

    Гхм, извинте, был не прав. Перепроверил -- все возвращается как надо.

  47. http://dmitr-kulikov.ya.ru/

    Если попробовать зайти на bobrdobr с помощью яндексовского OpenID, то бобр не очень добро отвечает: "The OpenID was invalid"... :(

  48. vankovalenko

    Вообще, здорово, что Вы этим занялись. Спасибо! К сожалению, остаются места, где openid заявлен, но поддерживается странным образом. Понимаю, звучит несколько странно, но нет ли у Вас трекера по openid, куда можно было бы сообщить о наличии проблем с авторизацией через openid.yandex.ru. (В моем случае, это imhonet.ru и еще несколько сервисов - сейчас уже не вспомню).

  49. Иван Сагалаев

    Официального публичного места для нашего OpenID пока нет. Как вернусь из отпуска, подумаю, может и правда фидбек организовать.

    А пока достаточно и тут просто комментарий оставить :-)

  50. alexeyb2

    Пытаюсь сделать openid авторизацию(http://words.wlink.ru/openid/). На сайты ya.ru и мой круг не заходит.
    Server denied check_authentication
    Это проблема Вашего сервера?
    Скрипты скачаны с http://www.openidenabled.com/openid/libraries/php/
    На другие известные openid серверы заходит. Например rambler

    Просто эти скрипты часто используютсься и будет неправильно если они не будут работатать на openid.yandex

Добавить комментарий

Вы можете подписать комментарий своим OpenID-логином или именем с EMail'ом.

OpenID

Имя и EMail

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