Имею удвольствие сообщить веб-сообществу, что мы недавно вдохнули вторую жизнь в наш яндексовый 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 развивался как можно быстрее и распространялся шире. Поэтому у нас есть некоторое количество планов на развитие нашего сервера.
Мы видимо будем расширять количество информации, которую выдаем со страницы пользователя. Мы, конечно же, не можем взять и автоматически раздать всем email'ы, фамилии и имена всех пользователей, поэтому тут потребуется аккуратность и отдельный интерфейс, чтобы пользователи сами могли разрешать, что показывать.
Напишем некоторое количество текста, объясняющего, что это все такое, зачем это надо пользователю, чем чревато.
Есть интересная идея придумать (или найти придуманный) протокол, которым Яндекс сможет сообщать целевому сайту относительный уровень доверия пользователю. Сейчас у сайта, который принимает яндексового юзера, есть уверенность только в том, что это не робот, потому что у нас есть CAPTCHA при регистрации. Но ведь мы на стороне сервера знаем, какими сервисами пользуется юзер, а значит можем прикинуть, что если пользователь активно пишет в свой ярушный блог и регулярно загружает фотки, то это скорее всего не спамер, а нормальный сетянин.
Я хочу обратиться ко всем в рунете, кто делает OpenID-логины. В большинстве случаев сейчас OpenID логин выглядит очень по-гиковски, и нормальным людям его показывать нельзя. Но есть и исключения типа формы на блоге Евгения Степанищева.
В идеале пользователю вообще не желательно показывать слова "OpenID", а давать понять, что он может просто залогиниться своим логином с другого известного сайта. Для западного интернета такими узнаваемыми провайдерами являются AOL, Yahoo. У нас — ЖЖ, Лайв Интернет, Мой Круг и теперь вот Яндекс. Я думаю это важно, потому что у Яндекса пользователей много, и это, в основном, как раз не гиковская аудитория. Поэтому призываю всех делать формочки, в которых пользователь может выбрать букву "Я", вписать свой логин, а формочка уже сама сделает из него
http://openid.yandex.ru/username
.
Комментарии: 64
А я как раз недавно соскочил с яндексовсого OpenID из-за недостатка функциональности (http://slaver.info/internet/myopenid.html) :(
я тоже хочу обратиться ко всем в рунете: давайте уже не только сервера поднимать, но и принимать комментарии через эту технологию
хорошо хоть blogspot.com подтянулся из крупных
Да, OpenID — это чрезвычайно удобно, и не так уж сложно реализуется и внедряется.
Молодцы! Самое важное - популяризировать подобные технологии в массах. Очень надеюсь, что Яндекс станет локомотивом OpenID в России. Теперь осталось ждать продвижения Яндекс Jabber ;)
О, теперь я понял как происходит авторизация по емейлам gmail, yahoo, msn, aol и facebook на buxfer.com
Нашему МирТесен было бы очень приятно, если б яндекс через SRE отдавал еще и email с именем : )
В плане реализации SRE на провайдере имхо очень удобен интерфейс https://pip.verisignlabs.com/
А ещё php-openid нехорошо себя ведёт с моим адресом: требует исключительно yadis content-type, и получает отлуп. Приходится дописывать адрес конкретной страницы...
Отличная новость!
а что теперь будет с OpenID Моегокруга?
Он останется работать. Хотя там надо будет во-первых подточить, чтобы к адресам не добавлялось nocookiesupport=yes, а потом он, возможно, тоже будет ссылаться на openid.yandex.ru. Правда, для этого нам надо доточить уже openid.yandex.ru, чтобы он понимал некий специальный класс пользователей, которые на МоемКруге могут регистрироваться с email'ом в качестве логина, не регистрируясь на Яндексе.
Будет, будет :-).
Не надо преувеличивать сложность OpenID в глазах юзера - у меня по OpenID прошли регистрацию 11 сотен мамашек из ЖЖ-коммьюнити malyshi и ru_perinatal - http://lj.bougakov.com/table/login/
99% из них - ну совсем не geeks.
Вот с тем, что OpenID идентификатор это нечто гиковское я не согласен. Ни чем он для пользователя не сложнее e-mail адреса или URL, перечислять в OpenID форме популярных провайдеров - только вносить путаницу, будет лучше, если OpenID формы везде будут одинаковы, как на этом сайте например - текстовое поле со стандартным значком + со стандартным именем, что бы поддерживающий OpenID браузер смог такое поле идентифицировать.
Мой сайт вряд ли показателен, потому что он как раз для гиков :-). Которым нравится читать про OpenID, поэтому они знают, что это.
Для пользователя OpenID сложнее тем, что это новое понятие, про котороне он еще ничего не знает, в том числе и того, что это "не сложнее email". Заметьте, в предыдущем примере у bougakov есть ссылка, где пользователям дается форма логина, оперирующая уже известным понятием: "введите ваш ЖЖ логин". И вот она проблем действительно не вызывает.
То-то мне один человек жаловался, что не может зайти на мой блог по openid от Яндекса
Этот блог к исключениям, к сожалению не относится ;) Я использую вот этот плагин для WP, и он предоставляет практически такую же форму. Он, правда, давно не обновляется, и там есть только LJ и DJ, но вроде бы в интернете есть сборки с большим количеством сервисов (самому пока добавить было лень).
не могу не испробовать, как оно всё
Ну значит, пользователю это придётся объяснить, перечисление сайтов проблему то не снимает, это сейчас их по пальцам можно пересчитать, а чего будем делать потом? В ЖЖ, кстати, никакого перечисления OpenID провайдеров нету, рядом есть иконка с вопросительным знаком, на которую можно нажать, что бы прочитать что это такое и с чем его едят, и вроде как пользуются же. На мой взгляд, если уж появилось новое понятие, то никуда от него не денешься, просто сам где то встречал форму где просят ввести ЖЖ логин, на деле форма работала через OpenID, только вот там про это не было сказано не слова.
да и ЖЖ не принимает OpenId вида username.ya.ru
а вообще побольше поддержки открытых технологий и дальше, спасибо :)
Конечно придется объяснять, этого никто не отменяет. Но есть два способа: один жесткий, когда "не понял, не прошел", а другой мягкий, когда у пользователя уже все получилось со своим привычным аккаунтом, ему все понравилось, у него родилось "warm fuzzy feeling", и тогда уже ему начинают рассказывать, что это такое.
Перечисление сайтов снимает проблему первого знакомства.
Ну потом, я подозреваю, подтянутся производители браузеров, которые будут предзаполнять OpenID-входы из своего интерфейса или вообще рисовать стандартную кнопку "Залогиниться". Тогда и оторвем все хелперы, без которых сейчас не получается.
Я ни в коем случае не предлагаю это решение, как постоянное.
Ну это уже ошибка с другой стороны. Примечание и fallback на "любой OpenID" оставлять, конечно, нужно.
Поломали, значит... На прошлой неделе работало. Впрочем, Володя мне тут ссылочку прислал про перловый модуль для OpenID 2.0, возможно ЖЖ когда-нибудь в обозримом будущем на него переедет, и это решит проблему.
Только что у себя в ЖЖ отставил коммент ярушным аккаунтом. Работает. :-)
Я боюсь, что это только лишнюю путаницу добавит. Так как “warm fuzzy feeling” появится скорее-всего именно на выбор провайдера и ввод своего ника, а не на какой-то там OpenID. На мой взгляд, если бы на сайте OpenID провадеров были на видном месте ссылка на текст с картинками про OpenID с примером простой текстовой формы где написано чего туда надо вводить, то научившись пользоваться одной такой формой на одном сайте, пользователь без проблем ею воспользуется на другой. Форму же со списком провайдеров на всех сайтах единообразно сделать не получится, так как список провайдеров будет разный. При этом, вероятно, у многих пользователей произойдёт срыв шаблона.
Согласен, это проблема... Подумаю над этим.
У меня заработало только вида http://openid.yandex.ru/username , может залогинится получилось раньше? :)
Будем надеятся, а пока при вводе OpenId ввиде http://username.ya.ru в URL`е вот такое сообщение
openid.error=This+server+cannot+verify+the+URL+u%27http%3A%2F%2Fopenid.yandex.ru%2Fusers%2FGuruGray%27
сама же страница ничего не выводит.
Сервер OpenID поднять каждый горазд - вот употреблять openid когда будете? Известно же что у OpenID проблема с малым количеством сайтов которые его допускают, а не с количеством провайдеров.
OpenID рулит. :) Еще бы действительно, Jabber поразвивать немножко. :)
Планы есть, правда пока неконкретные. По сути, есть два пути:
Первое не так интересно, как второе, но второе сложнее и дольше. Посмотрим, как пойдет.
я конечно зануда, но python-openid пока что не включена в стандартную библиотеку Питона, поэтому называть ее "стандартной" несколько преждевременно. Или в Python 3.0 она уже есть?
Я написал "де-факто стандартной". Для реализации OpenID в Питоне это действительно так.
почему бы и тут также не сделать? и рекомендовать тиражировать и реализовывать именно такую формочку, приучая юзера
p.s. не понял, почему сообщение не отправилось, после того, как подтвердил авторизации на опенайди-сервера яндекса. вместо этого просто заполнилось поле веб-сайт. а текст сообщения просто похерился
Здесь мне очень не хочется копаться в PHP-коде. Я периодически возвращаюсь к поиску какого-нибудь удачного плагина, но пока не нашел.
Я бы на вашем месте закрыл возможность определять существование пользователя через запрос его OpenID-странички.
Тут мы не открываем ничего нового. Достаточно зайти к нам на регистрацию пользователей и начать вбивать логины: там тоже напишут, какие заняты.
P.S. Оказывается и на Рамблере есть OpenID сервер! :-). Не знал, к своему стыду...
Ммм. Считайте меня параноиком, но это баг :)
Но как иначе? Поскольку зарегистрировать пользователя с занятым логином нельзя, то по этому факту всегда можно определить существование логина. В регистрации на Рамблере точно так же мне сказали, что логин "maniac" занят.
Формочка - это, конечно, хорошо, но не показывать юзеру слова OpenID - значит отсекать провайдеров, которых кто-то не считает "главными" (не говоря уже про standalone блоги). А OpenID - он ровно про другое.
Я соглашусь, что не показывать совсем — неверно. Конечно нужно. Но там, где пользователь сам их ищет. Мне нравится вариант, когда слово OpenID написано в открывающемся select'е: юзер уже пошел искать что-то свое, когда понял, что предложенное по умолчанию не подходит.
А вот про то, что "OpenID ровно про другое" соглашусь не до конца. Да, децентрализация — одна из неотъемлемых фич. Но для большинства юзеров все же не главная. Им в первую очередь важно, что они могут не придумывать и не запоминать еще один логин с паролем. А то, что они могут сознательно выбирать, кто будет контролировать их идентификационную информацию, большинство беспокоит далеко не так сильно, как нас, гиков. Что, наверное, печально, но тем не менее...
воодушевляет. надо попробовать
После обновления появилась интересная проблема:
В коде моей страницы на 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 а не логин яндекс, что меня полностью устраивало.
Сейчас нет. Отображается логин яндекса в-основном. Что делать?
В принципе, это зависит от сайта, который авторизацию спрашивает. У него есть и URL, который вы пишете, а теперь еще и никнейм, который туда приходит с openid.yandex.ru в виде логина. Хотя обычно все выбирают именно никнейм... Сделать с этим что-то можно с двух сторон. С одной стороны можно убеждать те сайты, что полученный автоматически никнейм нужно давать редактировать. С другой (нашей) стороны его изменить никак пока нельзя, но мы работаем над этим.
Тест - как отображается результат через другие OpenID-серверы. Например, pip.verisignlabs.com.
Приветствую!
Использую библиотеку dotneopenid (http://code.google.com/p/dotnetopenid/)).
C OpenID сервером Яндекса есть проблемы, описаны в тикетах:
Проблемы решаются со стороны клиента (библиотеки), но налицо проблема со стороны яндексовсого сервера.
Спасибо за сообщение! Я посмотрел на 71 баг, похоже это действительно легко можно починить. Про 72-й пока не знаю, с заголовком Expect мы еще не сталкивались.
При запросе SRE данных c яндексового OpenID сервера они возвращаются в кодировке cp1251. Баг или фича?
Получается как-то не совместимо с остальными провайдерами OpenID, у которых принято возвращать в utf8.
Может быть потому что в заголовках запроса у меня стоит
Accept-Charset: windows-1251,utf-8;
Сначала 1251, затем utf8.
Все же мне кажется лучше железно возвращать в utf8, т.к. нет возможности угадать в какой кодировке пришел ответ.
Попробовали воспроизвести сейчас — не получилось. Что с Accept-Charset, что без, все выдается в utf-8 всегда. А как вы windows-1251 получаете?
Гхм, извинте, был не прав. Перепроверил — все возвращается как надо.
Если попробовать зайти на bobrdobr с помощью яндексовского OpenID, то бобр не очень добро отвечает: "The OpenID was invalid"... :(
Вообще, здорово, что Вы этим занялись. Спасибо! К сожалению, остаются места, где openid заявлен, но поддерживается странным образом. Понимаю, звучит несколько странно, но нет ли у Вас трекера по openid, куда можно было бы сообщить о наличии проблем с авторизацией через openid.yandex.ru. (В моем случае, это imhonet.ru и еще несколько сервисов - сейчас уже не вспомню).
Официального публичного места для нашего OpenID пока нет. Как вернусь из отпуска, подумаю, может и правда фидбек организовать.
А пока достаточно и тут просто комментарий оставить :-)
Пытаюсь сделать openid авторизацию(http://words.wlink.ru/openid/). На сайты ya.ru и мой круг не заходит.
Server denied check_authentication
Это проблема Вашего сервера?
Скрипты скачаны с http://www.openidenabled.com/openid/libraries/php/
На другие известные openid серверы заходит. Например rambler
Просто эти скрипты часто используютсься и будет неправильно если они не будут работатать на openid.yandex
Основной вопрос, насколько можно доверять Яндексу (равно и как другим серверам) в том, что для статистики заходов "Также сбор этой информации можно полностью отключить и очистить уже собранную."
Я например стараюсь нигде не регистрироваться, а если без регистрации никак - пользуюсь разными никами. Хотя я нормальный пользватель, не хакер и не пират и не прочее, но даже на Одноклассниках регистрироваться не стал. Как говорится, если у вас паранойя, это не значит что за вами не следят. :)
В этом смысле казалось бы неплохо сделать свой собственный OpenId-сервер типа xxx.dyndns.org:8901 - но увы наоборот всем сразу станет видно в какой стране стоит ваш сервер (не говоря уж о том что большинство сайтов не станут доверять неизвестному им серверу). Понятно, что можно сделать его на зарубежном хостинге типа yahoo.com (благо англоязычный спам и баннеры я легко проигнорирую, и почту яхи смотреть не собираюсь, а кооперация между ФСБ и ЦРУ хоть и возможна но явно затуднительна), но всё равно...
Отсюда мораль: опенидом сейчас пользуются гики, при радикальном упрощении им могут пользоваться и домохозяйки, но треть пользователей никогда на него не перейдёт из принципа.
С другой стороны, две трети - это много, так что определённый успех вам гарантирован.
Даже дарю идею к вашему варианту 4: добавить к openid.yandex.ru статический параметр, например openid.yandex.ru/autologin, при указании которого ваш опенид-сервер автоматом пробрасывает пользователя на страницу вашего логина passport (как если бы ползователь нажал ссылку "войти"), а уж на этой странице броузер пользователя сможет автозаполнить логин/пароль. И ваш openid-сервер сможет вернуть спрашивающему серверу нужный тому логин и прочую инфу.
Таким образом, пользователю сайтов с openid, знающих об этой возможности вашего сервера и обращающегося к вам по этой общей для всех пользователей ссылке, даже не надо будет вводить в свою форму (и в запрос) яндекс-имя: оно появится в форме для яндекс-логина не из исходного запроса, а из автозаполнения броузера (ну или пользователь введёт его вручную - всё равно 1 раз, просто уже на странице Яндекс-пасспорта). На сайте пользователь выбирает "логиниться через/Яндекс", кликает кнопку, видит ваш автозаполненный логин, кликает кнопку Войти, и вуаля - он вернулся залогиненным!
При авторизации на вашем форуме типа user.ya.ru в профиле получается ссылка типа http://dengerr.ya.ru/index_fotki.xml?ncrnd=9951&nocookiesupport=yes , а если вбить openid.yandex.ru/user/, то в профиль заносится нормальная ссылка.
Угу, появилось такое недавно. Чиним!
По-моему, SRE на яндексе поломалось - не передает на зависимый сайт поля openid.sreg.*, хотя при авторизации я разрешил их передавать галочками в профиле.
Дополнение: это даже при отправке этого комментария проявилось. Галочки поставил, а при возврате сюда Софтманьяки сказали "Error: please fill the required fields (name, email).", потом "We were unable to authenticate your claimed OpenID, however you can continue to post your comment without OpenID:", заставляя вручную регистрироваться, т.е. ваш сайт яндексовую авторизацию сейчас не принимает как раз из-за поломки SRE на яндексовом openid-сервере.
Спасибо! Наконец-то и Яндекс поддерживает openid
Рад что яндекс использует джангу
А есть ли рекомендуемые изображения для предоставления пользователям возможности логиниться с OpenID Яндекса? Вроде той 'Sign in with Google'.
Обычно все просто берут favicon. Яндексовый логотипы во всевозможных видах и правила его использования есть здесь: http://company.yandex.ru/inside/logos.xml
Ну допустим многие не пользуются ярушными сервисами, предпочитая другие, но авторизуются они через name.ya.ru, так что же они не нормальные сетяне? Я думаю показатель доверия надо вводить как-то иначе, на основе нескольких сервисов к примеру.
Прикрутить OpenID от того же Яндекса просто и удобно, но есть возможность с помощью пары файлов сделать OpenID на своём сайте. Однако при этом мне не ясен разговор об уровне доверия.
Что-то как-то странно работает - если передавать дополнительные параметры с яндекса, выдает "Server denied check_authentication ", если не передавать, то все ок.
Доброе время суток, господа.
Комментарий оставить здесь с помощью openid провайдера, поднятого только что на моём блоге http://sergey-s-betke.blogs.novgaro.ru вполне даже получается, а вот войти на ya.ru, в почту яндекса или ещё куда на яндеке - никак. Яндекс не openid consumer, только provider? а планируется ли реализовать consumer? Очень бы хотелось, а то надоело уже кучу логинов и паролей иметь.
Да, только провайдер. Про остальное мы думаем, но это несколько сложнее, потому что вопрос не только (и не столько) технологический.