Персональный OpenID сервер на 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.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 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 сервером? было бы очень стильно для ИТшников

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