Решил наконец-то поднять у себя
персональный OpenID сервер
(ну да, я параноик, не хочу чтобы кто-то ещё собирал информацию на каких сайтах я бываю). Причём хотелось чтобы он был написан на Perl. Поискал в сети - нету! Более того, невероятно, но на CPAN только два модуля для OpenID, один жутко раздутый и явно недописанный, а второй вроде бы неплохой (
Net::OpenID::Server Фитцпатрика), но документации и примеров для него практически нет. :(
В общем, за 6 часов написал свой сервер:
OpenIDsrv. Может пригодится другим параноикам или в качестве дополнения к документации на Net::OpenID::Server.
Чем его нормально тестировать я так и не нашёл. Просто авторизацию можно проверять через
OpenID Checkup, но
SRE так не проверишь. Для проверки SRE пришлось завести блог на первой попавшейся под руку площадке (blogger.com) и постить туда комменты.
Насколько я понял, единого или даже просто предпочтительного способа привязать имя/ник к OpenID нет. Используются и SRE, и hCard. В общем, пришлось и hCard
себе прописывать, но чтобы найти способ протестировать правильно ли я его прописал пришлось как следует поискать сервис
hCard Extract.
комментарии (13)
Вообще эта ситуация меня неприятно поразила. При, казалось бы, активно растущей популярности OpenID, и такая "запущенность" на фронте разработки OpenID серверов... Я этого просто не ожидал.
а в целом странно, да
Кстати, было бы любопытно посмотреть на Вашу реализацию, если она open source, конечно. :)
signed_return_url(), и обработка ветки$type eq 'setup'— эти два куска писались методом интутивного тыка, и я совершенно не уверен что они корректно покрывают все варианты использования.Например при openid.mode=checkid_immediate (вживую я при тестировании этого режима не встречал) и при провале is_identity/is_trusted,
handle_page()вернёт 'redirect', а не 'setup' — а я этот редирект переписываю черезsigned_return_url(), что теоретически может привести к подтверждению авторизации вместо провала, т.е. к дыре в безопасности. А может никакой дыры и нет. Но без нормальной документации и тестов это узнать сложно.http://softwaremaniacs.org/blog/2007/03/25/cicero-openid-hcard/
но проблема в том, что нет общепринятого стандарта видимо...