Как стать автором
Обновить

Комментарии 13

Я постарался дать в этом топике ссылки на всё то, чего мне дико нехватало сегодня, когда я озадачился поиском для себя персонального простенького OpenID сервера. Надеюсь это сэкономит несколько часов поиска кому-нибудь другому.
Прям квест какой—то! :)
Угу. Поэтому и запостил топиком. Если бы не возникали на каждом шагу проблемы, по которым практически невозможно нагуглить решения, то никакого смысла в посте а-ля "ух ты, я скриптик ещё один наваял" небыло.

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

а в целом странно, да
Сейчас уже не вспомню детали, но в своё время я на коленке соорудил OpenID-сервер как раз на основе Net::OpenID::Server и особых проблем тогда не испытал... Документации по нему и правда немного, но там нужно-то её - две капли...
Ну, смотря что называть "особыми проблемами". Если бы у меня была нормальная дока, или хотя бы несколько примеров использования, плюс информация как всё это можно удобно тестировать, то я бы этот сервер написал за час, а не 6 часов. А программисты послабее вообще могли на базе имеющейся документации ниасилить написание сервера - встречал я где-то несколько заброшенных вопросов (без нормальных ответов) на эту тему, пока рылся в гугле.

Кстати, было бы любопытно посмотреть на Вашу реализацию, если она open source, конечно. :)
Сейчас более внимательно просмотрел код Вашего OpenIDsrv и понял, что моя реализация процентов на 80 совпадает с Вашей :) - детали лишь в вопросах аутентификации конкретных пользователей. Так что, видимо, дорога тут одна!
Основное, что меня интересовало, это способ вызова signed_return_url(), и обработка ветки $type eq 'setup' — эти два куска писались методом интутивного тыка, и я совершенно не уверен что они корректно покрывают все варианты использования.

Например при openid.mode=checkid_immediate (вживую я при тестировании этого режима не встречал) и при провале is_identity/is_trusted, handle_page() вернёт 'redirect', а не 'setup' — а я этот редирект переписываю через signed_return_url(), что теоретически может привести к подтверждению авторизации вместо провала, т.е. к дыре в безопасности. А может никакой дыры и нет. Но без нормальной документации и тестов это узнать сложно.
Ну, очень крутая документация (ИМХО, даже за пределами понимания :)) есть для самой технологии OpenID. Там всё поведение сервера в разных ситуациях описано. Мне лично было просто лень вникать.
Я спеки читать люблю, но в данном случае я держал себя в руках и в спеку глубоко не вникал. Потому что на то, чтобы вникнуть в спеку + детально разобраться с чужим модулем уйдёт значительно больше времени, чем на вникание в спеку + написание своей реализации протокола OpenID. А я пока морально не готов ещё и этим заниматься, я хотел просто поставить себе персональный OpenID сервер. :)
Вот-вот, ровно те же побуждения двигали мной :). Точнее, ещё хлеще: пришёл товарищ и спросил, почему у меня не сделан OpenID-сервер, и мне было проще написать реализацию, чем разобраться, как оно работает :)).
способ привязать никнейм к опенид как раз есть, наиболее хорошо это описано тут
http://softwaremaniacs.org/blog/2007/03/25/cicero-openid-hcard/

но проблема в том, что нет общепринятого стандарта видимо...
а почему бы хабру не стать openID сервером? было бы очень стильно для ИТшников
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории