Советы по надежному OpenID с вашим собственным доменом - PullRequest
0 голосов
/ 04 августа 2011

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

  • Сделать http://alvaro.es/ моим идентификатором.
  • Уметь прозрачно переключать провайдеров.
  • Войти в любой третийсторонний сайт, который принимает OpenID.
  • Уметь предоставлять личные данные (адрес электронной почты, часовой пояс, аватар ...) и получать подсказки, отправлять их или нет на сайты, которые их запрашивают.
  • Принимайте OpenID на моих собственных (на базе PHP) сайтах без необходимости покупки SSL-хостинга.

Я прочитал обычный документ и оценивал несколькоOpenID провайдеры (Google, Yahoo, myOpenID ... и даже на моем собственном сервере ).Дело в том, что я уже некоторое время использую OpenID и:

  • Провайдеры предлагают очень скудную документацию или ее совсем нет.
  • Независимо от того, какого провайдера я выбираю, всегда естьсайты, на которых не удается войти в систему (обычно без сообщения об ошибке).
  • У меня мало контроля (или его вообще нет) над идентификатором, возвращенным провайдером.
  • Я до сих пор не могу понятькак все это действительно работает.

Я ищу общий совет, но я понимаю, что это может быть субъективным, поэтому я сделаю несколько конкретных вопросов.


ПокаЯ пытаюсь myOpenId в качестве поставщика и LightOpenID в качестве потребителя.Мои вопросы:

  1. Мой URL содержит заголовок HTTP:

    X-XRDS-Location: http://kalvaro.myopenid.com/?xrds=1
    

    ... и следующие теги HTML:

    <link rel="openid.server openid2.provider" href="http://www.myopenid.com/server">
    <link rel="openid.delegate openid2.local_id" href="http://kalvaro.myopenid.com">
    

    Это правильно?Достаточно ли этого?

  2. myOpenID предоставляет Ваши домены , функцию регистрации вашего собственного доменного имени, но я не осмелился проверить его (нужны изменения вDNS) и форма конфигурации предлагает мне выбрать между http://openid.alvaro.es/username и http://username.alvaro.es/ в качестве идентификатора (не http://alvaro.es/).Тем не менее, Stackoverflow по-прежнему сообщает alvaro.es как мой идентификатор без этой функции.Нужно ли его использовать?

  3. При реализации LightOpenID я сопоставляю локального пользователя с $openid->identity (где $openid - это экземпляр объекта LightOpenID).Этот атрибут является URL-адресом, предоставленным пользователем.Это правильно?

  4. Есть ли более подходящие провайдеры или библиотеки потребителей, чем те, которые я выбрал?

1 Ответ

1 голос
/ 04 августа 2011
  1. Это правильно.Это более чем достаточно.Хотя предоставление X-XRDS-Location - хорошая вещь, поскольку оно ускоряет процесс обнаружения, в этом нет особой необходимости.
  2. Насколько я понимаю, «Ваши домены» полезны, когда вы хотитеиметь несколько учетных записей в вашем домене.В любом случае, вам вообще не нужно его использовать.
  3. Это правильно.URL-адрес также называется заявленным идентификатором, то есть тем, что пользователь утверждает, что он является.
  4. Как автор LightOpenID, мой ответ очевиден и, возможно, пристрастен - я его создал, потому что не смог найтихорошая, существующая библиотека.

Другие вещи, которые вы, возможно, захотите знать:

  • Делегирование не будет работать с Google и любым другим провайдером, который использует select_identifier (т.е. каждыйУчетная запись имеет тот же URL, а затем провайдер запрашивает ваш логин).
  • Ваша делегация, как показано в 1., позволит вам прозрачно переключаться между провайдерами и входить на любой сайт, поддерживающий OpenID, так же, каквы хотите.
  • Что касается личных данных, то это полностью зависит от поставщика, отправляет ли он их или нет, какую личную информацию он поддерживает и т. д. Например, Google не позволяет вам выбиратьчто отправлять, только отправлять ли что-то (и все, что, по утверждениям веб-сайта), вообще.
  • Некоторые реализации содержат ошибки и действительно дают сбой.Попробуйте войти во второй раз, иногда это работает.
  • Идентификатор, возвращаемый вашим провайдером, не должен иметь значения, если вы используете делегирование.Веб-сайт, на который вы входите, должен использовать ваш заявленный идентификатор.

Что касается работы openid, см. Некоторые ответы на этот вопрос в SO .

...