Поднял, наконец свой собственный OpenID провайдер. Путем минимальных переделок примера к модулю Net::OpenID::Server. Пока что никаких simple registration и attribute exchange extension не поддерживает, так как их, похоже, забыли положить когда переписывали модуль на поддержку OpenID 2.0.

Вообще OpenID 2.0 это что-то ужасное. Исходный OpenID был простым и понятным протоколом - вот URL, по ней есть контент, и где-то маленький-маленький элемент link, который указывает на опенидный сервер. Мы у этого сервера спрашиваем, а правда, что тот, кто к нам пришёл — законный владелец этой URL. Тот проверяет и отвечает да/нет. Всё. Если этот человек хочет ещё что-то про себя рассказать не людям, а другим серверам, может link с другим rel (например foaf) вписывать.

Теперь накрутили какой-то Yadis, для корректной работы которого нужно отдавать нестандартные http-заголовки, какие-то xrds, которые непонятно какой смысл имеют. При этом поддерживают все кто во что горазд. Например, хотя спецификация Yadis вообще-то предусматривает использование <meta http-equiv> Dreamwidh её кушать не хочет - ему http-заголовок подавай.

При этом половина ссылок на спецификацию и библиотеки с openid.net возвращает 404, а готовых drop-in реализаций не в виде плагинов к огромным фреймворкам нет. Приходится раскапывать информацию где-то на stackoverflow и чуть ли не в википедии.

Кстати, про foaf, похоже, забыли, и забыли незаслуженно.

Расширения sreg и ax надо будет прикрутить. А то вдруг заведется среди тех, куда я хожу комментировать, блог, который умеет оттуда email для посылки ответов или хотя бы для вытаскивания аватарки с gravatar-а доставать.

Вообще я хотел в этом вопросе отказаться от идеологической чистоты, и воспользоваться сторонним сервисом для обслуживания openid моей URL. Но myopenid.com, единственный известный мне сервис, позволяющий вешать openid на свою URL, что-то вчера безбожно тормозил, да и Email он, судя по ToS отдавать не умеет. Поэтому пришлось опять пойти по пути «Хочешь, чтобы было сделано хорошо, сделай это сам».

Cat's shadow : comment 1
Птн 11 Янв 2013 11:01:50

Хм... Я уж не помню почему, но давно перебрался от MyOpenID к Symantec (http://pip.verisignlabs.com) и доволен весьма удобством/стабильностью. Не осилил свой вариант поднимать.

vitus : comment 2
Птн 11 Янв 2013 11:42:26

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

Кстати, может быть доведу своё решение до "почти коробочного".

То есть до deb-пакета, который поставить и потом просто набивать базу данных юзеров в стиле /etc/passwd - точно доведу. Самому так удобнее будет. А вот до постановки на произвольный shared hosting - это пожалуй, вряд ли. Там во всяком случае модуль Net::OpenID::Server требуется.