Я разрабатываю потребителя OpenID в PHP и использую фантастическую библиотеку LightOpenID (http://gitorious.org/lightopenid). При базировании моего кода прочь найденного в клиентском сценарии в качестве примера я успешно создал потребителя. Однако я натыкался на препятствие: Google требует openid.identity
и openid.claimed_id
быть установленным на "http://specs.openid.net/auth/2.0/identifier_select"
(см. здесь). Если я делаю это, это работает, но другие поставщики (т.е. AOL) не делают.
Вот мои вопросы:
identifier_select
требуется, вопреки спецификациям OpenID?identifier_select
существует ли конечное число их, в которых я буду просто hardcode, или разве там должен некоторым образом определить это через спецификацию OpenID?Я плохо знаком с внутренностями OpenID, таким образом, я не был бы удивлен, является ли это немым вопросом. Я не смог найти любую информацию об этом предмете после обыска Интернета.
Google не противоречит спецификации. Спецификация OpenID 2.0 абсолютно допускает потоки identifier_select, которые позволяют нечто, называемое "направленной идентификацией", которую Google является единственной заметной OP (о которой я знаю), которая действительно использует эту возможность.
И да, полностью и правильно реализованная библиотека OpenID RP автоматически заметит, что Google (и любой другой подобный ОП) требует identifier_select, так как это часть шага обнаружения идентификатора, который учитывает это. Извините за библиотеку, которую вы используете, но похоже, что она причиняет вам неудобства из-за неполной реализации OpenID.
И кстати, AOL действительно поддерживает identifier_select.
Используется для аутентификации в режиме выбора идентификатора OP. Это менее распространенный, но не решающий случай. Я заметил, что среди всех провайдеров OP, которые я использую, этого требуют Google и Yahoo.
Это необходимо для поддержки направленной идентификации в OpenID 2.0. По сути, вы получаете разные идентификаторы OpenID для разных веб-сайтов. Защитники конфиденциальности настаивают на переходе к этой модели, поэтому я думаю, что рано или поздно вам придется поддержать эту модель.
Автор LightOpenID здесь.
Обратите внимание, что этот ответ касается последней версии моей библиотеки, которая была добавлена после того, как был задан этот вопрос. Для тех, кто все еще борется с этой проблемой, загрузите новейшую версию