Пользователь
0,0
рейтинг
26 февраля 2008 в 23:37

Разработка → Персональный OpenID сервер на Perl

Perl*
Решил наконец-то поднять у себя персональный OpenID сервер (ну да, я параноик, не хочу чтобы кто-то ещё собирал информацию на каких сайтах я бываю). Причём хотелось чтобы он был написан на Perl. Поискал в сети — нету! Более того, невероятно, но на CPAN только два модуля для OpenID, один жутко раздутый и явно недописанный, а второй вроде бы неплохой (Net::OpenID::Server Фитцпатрика), но документации и примеров для него практически нет. :(

В общем, за 6 часов написал свой сервер: OpenIDsrv. Может пригодится другим параноикам или в качестве дополнения к документации на Net::OpenID::Server.


Чем его нормально тестировать я так и не нашёл. Просто авторизацию можно проверять через OpenID Checkup, но SRE так не проверишь. Для проверки SRE пришлось завести блог на первой попавшейся под руку площадке (blogger.com) и постить туда комменты.

Насколько я понял, единого или даже просто предпочтительного способа привязать имя/ник к OpenID нет. Используются и SRE, и hCard. В общем, пришлось и hCard себе прописывать, но чтобы найти способ протестировать правильно ли я его прописал пришлось как следует поискать сервис hCard Extract.
Alex Efros @powerman
карма
302,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

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

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

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

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

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

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

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

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