2010-06-10 2 views
13

Я разрабатываю потребитель OpenID в PHP и пользуюсь фантастической библиотекой LightOpenID (http://gitorious.org/lightopenid). Исходя из моего кода, найденного в примере клиентского скрипта, я успешно создал пользователя. Однако я столкнулся с проблемой: Google требует, чтобы openid.identity и openid.claimed_id были установлены в "http://specs.openid.net/auth/2.0/identifier_select" (см. here). Если я это сделаю, это работает, но другие поставщики (т. Е. AOL) этого не делают.Является ли Google единственным поставщиком OpenID, который требует «identifier_select»?

Вот мои вопросы:

  1. Является ли Google угловой случай - это единственный провайдер OpenID, где identifier_select требуется, в отличие от OpenID спецификации?
  2. Есть ли недостаток в библиотеке LightOpenID?
  3. Является ли мое понимание того, как работает OpenID?
  4. Если Google не является единственным провайдером, которому требуется identifier_select, есть ли конечное число из них, в которое я просто вложу код, или он может каким-то образом определить это через спецификацию OpenID?

Я новичок во внутренних компонентах OpenID, поэтому я не удивлюсь, если это глупый вопрос. Я не смог найти информацию по этому вопросу после очистки Интернета.

+1

Конечно, не тупой вопрос (если они существуют), вы даже предоставили достаточную информацию, релевантные ссылки, хорошо сформулированные вопросы и записку, которую вы на самом деле искали сами! –

ответ

6

Google не противоречит спецификации. Спецификация OpenID 2.0 абсолютно разрешает потоки identifier_select, которые позволяют использовать что-то под названием «направленная идентификация», которую Google является единственным заметным OP (который я знаю), который фактически реализует способность делать.

И да, полностью и правильно реализованная библиотека OpenID RP автоматически заметит, что Google (и любой другой OP, подобный ей) требует идентификатора_селекта, поскольку он является частью этапа обнаружения идентификатора, который поднимает это. Извините за библиотеку, которую вы используете, но похоже, что это вызывает у вас горе из-за, возможно, неполной реализации OpenID.

И, кстати, AOL делает идентификатор поддержки.

+1

Похоже, мне просто нужно расширить библиотеку (LightOpenID). Две популярные библиотеки PHP OpenID (компонент Zend и PHP-OpenID от JanRain) обеспечивают большую гибкость, чем мне нужно, и не имеют такого приятного интерфейса, как LightOpenID. Пожелай мне удачи! – Skrat

+0

Я думаю, что основная поддержка направлена ​​на идентичность, включая myopenid и yahoo. – Artefacto

+0

Artefacto, я думаю, вы вводите в заблуждение направленную идентичность с идентификатором_select, которые являются разными. Identifier_select - это инициатор OpenID, инициированный идентификатором OP, где пользователь не должен знать свой собственный идентификатор. «Направленная идентификация» - это то место, где OP предоставляет парный уникальный идентификатор для каждого RP, в который входит пользователь. Yahoo, например, поддерживает identifier_select, но * не * направленную идентификацию. –

0

Используется для аутентификации в режиме выбора управляемого Driven ID. Это менее распространенный, но не угловой случай. Среди всех поставщиков OP, которые я использую, я заметил, что Google и Yahoo требуют этого.

Это необходимо для поддержки Directed Identity в OpenID 2.0. В принципе, вы получаете другой OpenID для разных сайтов. Есть толчок, чтобы перейти к этой модели сторонниками защиты конфиденциальности, поэтому я думаю, что вы должны поддерживать это скоро или позже.

+0

Есть ли способ обнаружить, что провайдеру требуется Directed Identity перед перенаправлением пользователя? Я могу жестко поддерживать Yahoo и Google, но у меня все еще есть надежда найти более гибкое решение. Вероятно, в спецификациях OpenID есть что-то очевидное. – Skrat

+0

В отличие от OpenID 1.0, вы должны выполнить некоторую работу по обеспечению доступа для провайдера OpenID 2.0. Например, вам нужно замазывать свой сайт логотипами NASCAR, потому что вы не можете ожидать, что пользователи узнают, что такое URL OpenID 2.0. Для этого вы можете просто добавить флаг к своей конфигурации сайта. –

7

The LightOpenID автор здесь.

  1. Спецификация позволяет, так что, вероятно, не только один (и другие ответы уже Yahoo)
  2. Нет, не – LightOpenID поддерживает это. (см. example-google.php в библиотеке).
  3. Вам все еще нужно знать URL-адрес открытия, поэтому вам нужно знать поставщика. Или сообщите пользователям ввести https://www.google.com/accounts/o8/id в качестве их личности.

Обратите внимание, что этот ответ касается новейшей версии моей библиотеки, которая была нажата после запроса этого вопроса.Для тех, кто все еще борется с этой проблемой, пожалуйста, загрузите newest version

+0

Mewp, спасибо за обновление вашей библиотеки, которое вы нажали всего пару дней назад. Теперь использование «identifier_select» является автоматическим (т. Е. Встроенным в процесс обнаружения), что означает, что использование LightOpenID будет работать одинаково для всех поставщиков. Еще раз спасибо, продолжайте отличную работу. Мне нравится ваша библиотека, такой чистый (читаемый «читаемый») код встречается редко. – Skrat

+0

Я только что попал в соблазн OpenID, я просто хотел сказать, что я абсолютно люблю свой класс. Я все еще довольно зелёный для концепции OpenID. Я всю ночь прочитывал об этом, но я все еще не могу понять AXs и SREG, но завтра следующий день! Кроме того, не могли бы вы возражать, если бы я попытался разблокировать ваш код и опубликовать его как часть моего проекта OSS (http://sf.net/projects/phunction/), а также лицензию MIT? –

+0

@Alix Axel: Поскольку ваш проект лицензирован MIT, вы наверняка знаете, что лицензия разрешает его. Другими словами: вы, конечно, можете, если не утверждаете, что написали это. Кроме того, вам не нужно углубленно понимать, как работает SREG/AX. Это всего лишь метод получения дополнительной информации о пользователе, и вы можете отметить его как условный или обязательный. Единственное, что вам нужно знать, это имена полей AX, которые можно найти по адресу http://www.axschema.org/types/. Если у вас есть дополнительные вопросы, просто сообщите мне. – Mewp