2010-07-15 1 views
15

В OpenID specs, он говорит:OpenID: уникальный URL-адрес идентификатора? каковы различия между идентификаторами

  • Идентификатор:

Идентификатор, это просто URL. Весь поток протокола OpenID Authentication доказывает, что конечный пользователь является владельцем URL-адреса.

  • Заявленный Идентификатор:

Идентификатор, что конечный пользователь говорит, что они владеют, хотя это еще не было проверено Потребителя.

  • Проверенно Идентификатор:

Идентификатор, что конечный пользователь доказал потребителю, что они владеют.

  • Идентичность Поставщик:

Также называется "IdP" или "Сервер". Это сервер проверки подлинности OpenID, который пользовательский контакт использует для криптографического доказательства того, что конечный пользователь владеет искомым идентификатором. Как конечный пользователь аутентифицирует свой поставщик удостоверений, находится за пределами OpenID Authenticaiton.

  • ли URL уникальный идентификатор? Что это такое?

  • Если это не уникально, есть ли что-то уникальное, чтобы потребитель мог различаться между разными пользователями на одном и том же URL-адресе конечной точки OpenID?

  • В чем разница между IdP и URL-адресом идентификатора?

В других местах я прочитал термин «URL конечной точки OpenID».

  • Является ли URL конечной точки OpenID таким же, как IdP? Итак, IdP также является URL-адресом?

В качестве примера возьмем Google OpenID. Когда какой-либо сайт запрашивает у меня идентификатор OpenID, я использую URL OpenID https://www.google.com/accounts/o8/id. Это URL-адрес идентификатора? Если это так, то это явно не является уникальным. Часто, когда я вернусь в настройках своей учетной записи на этом сайте о моем имени входа OpenID, он не показывает этот введенный URL, но он расширил его как-то как https://www.google.com/accounts/o8/id?id=AltOawk.... Этот URL теперь кажется уникальным.

  • В чем цель https://www.google.com/accounts/o8/id? Это URL-адрес конечной точки OpenID? Или это URL-адрес IdP (если это что-то другое)?

  • И какова цель https://www.google.com/accounts/o8/id?id=AltOawk...?Это действительно уникально и всегда одинаково для my Google аккаунт? Так что URL-адрес идентифицирует меня?

  • Почему они не использовали https://www.google.com/accounts/o8/id?u={google-username} вместо этого загадочного ...?id=AltOawk...?

  • Каков URL-адрес идентификатора в случае Google?

  • Что такое URL-адрес конечной точки OpenID? (Что такое URL-адрес IdP?)

Причина, по которой я прошу, заключается в том, что я пытаюсь реализовать свою собственную конечную точку OpenID.

  • Является ли URL конечной точки OpenID таким же, как URL-адрес идентификатора?

В моей реализации конечной точки OpenID у меня есть именно эта проблема, которая не может различаться между разными пользователями. Веб-сайт потребителя просто принимает всех пользователей в этой конечной точке OpenID как одно и то же. Конечно, это всегда один и тот же OpenID-URL, но это также относится к Googles OpenID.

  • Если конечный пользователь использует этот «общий» URL-адрес, как я могу перенаправить/переслать его в моей реализации конечной точки OpenID на «конкретный»/уникальный (идентификатор?) URL-адрес? Или как я могу сделать это, чтобы различать разных конечных пользователей по одному и тому же URL OpenID?

В моей текущей реализации, когда я включаю трассировку отладки, первым запросом я получаю режим checkid_setup. В спецификациях говорится, что я получаю Идентификационный номер здесь. Из-за того, что я ввел на потребительский сайт (и моя трассировка отладки говорит то же самое), то есть «общий» URL (URL конечной точки OpenID). То есть то есть не уникальный URL.

  • Должен ли я сделать перенаправление в этот момент? Спецификации ничего не говорят об этом. Где я могу указать «конкретный» URL? (В моем случае, то есть URL http://{endpoint-url}?u={endpoint-username}.)

Есть также термины "OpenID-сервер" (URL) и "OpenID Делегат" (URL).

  • Как эти термины относятся к другим условиям выше? Все равно что URL конечной точки OpenID?

  • Что такое идентификатор OpenID? То же, что и URL-адрес идентификатора OpenID?


Смотрите также связанный с ним вопрос: How does OpenID differ between different logins on the same OpenID endpoint?

(Meta вопрос: Должен ли я, возможно, разделить это в много независимых SO вопросов, я боюсь, что я не могу получить ответы на все мои вопросы в противном случае.)

ответ

4

Хорошо, как я только что исправил свой SMF OpenID endpoint implementation (читал подробности о некоторых очень связанных проблемах у меня было here), где я сделал несколько предположений относительно этих отношений. Конечно, это не доказывает их правильность (поэтому, пожалуйста, поправьте меня).Вот они:

  • Идентификатор URL = OpenID конечной точки URL = IdP

  • Конечного OpenID является не уникальной. Это одинаково для всех конечных пользователей этой конечной точки.

  • Подтверждено идентификатор URL = тождественное

  • Проверенные URL-идентификатор является уникальным. Он связан с учетной записью пользователя конечной точки.

  • https://www.google.com/accounts/o8/id - это конечный URL Google OpenID.

  • https://www.google.com/accounts/o8/id?id=AltOawk... - это идентификатор проверенного идентификатора Google OpenID.

  • Хэш-код, содержащий идентификатор Google OpenID, также связан с областью OpenID (пространство имен потребительских доменов, где этот идентификатор OpenID остается действительным). Это одна из причин не быть только именем пользователя.

  • О том, как указать уникальный идентификатор проверенного идентификатора, см. here.

Тем не менее некоторые вещи остаются неясными мне:

  • Какие другие причины есть, что Google использует для хэшированном идентификатора; он мог бы также использовать id?u={username}&oidrealm={...}.

  • В чем причина того, что такая область OpenID вообще отсутствует?

  • В чем разница между URL-адресом идентификатора и заявленным URL-адресом идентификатора?

+0

Почему бы не 'id? U = {username} & oidrealm = {...}' а хэш? Одна из причин может заключаться в том, что, возможно, ваш адрес электронной почты может быть получен из вашего имени пользователя? (Имя пользователя Gmail?) И вы, возможно, не захотите отдать свой адрес электронной почте Оповедине. Другая причина может заключаться в том, что вы даже не хотите отсылать свое имя пользователя (даже если оно не может быть сопоставлено с вашей электронной почтой) из-за проблем с конфиденциальностью. – KajMagnus

+1

[Здесь я нашел ответ от Google] (http://groups.google.com/group/google-federated-login-api/web/the-most-important-technical-issue-in-using-the-google -accounts-api) (я думаю): * Мы решили сделать идентификаторы для конкретных пользователей, чтобы обеспечить точность конфиденциальности для наших пользователей. Например, вы можете создать сайт, который предоставляет услуги пользователям учетных записей Google, без необходимости узнавать их личность в Google * – KajMagnus

2

Это мое понимание. Я просто отвечаю на два последних вопроса в собственном ответе. Надеюсь, кто-то найдет это полезным.

В чем причина того, что такая область OpenID вообще отсутствует?

Область используется для обеспечения безопасности. В принципе, return_url проверяется на соответствие области, а спецификации OpenID говорят, что они ДОЛЖНЫ совпадать. Google сделал этот шаг дальше и предоставляет уникальные проверенные идентификаторы для каждого царства. Они могли бы сделать так, как вы предложили, и вернуть царство в свой идентификатор, но тогда вы могли бы сказать, посмотрев два проверенных идентификатора, были ли они одним и тем же конечным пользователем или нет. Я думаю, что они пытаются сохранить свои идентификаторы без идентификации информации. (иронический, нет?)

В чем же разница между URL-адресом идентификатора и URL-адресом заявленного идентификатора?

Заявленный идентификатор - тот, который указал конечный пользователь. Это не их уникальный идентификатор. Yahoo - хороший пример этого.Они позволяют вам указать yahoo.com в качестве вашего идентификатора, войдите в свою учетную запись yahoo и верните уникальный идентификатор для пользователя openid. Это просто упрощает процесс для конечного пользователя. (И увеличивает вероятность того, что они будут использовать yahoo.com в качестве OpenID!)

2

И какова цель https://www.google.com/accounts/o8/id?id=AltOawk ...? Это действительно уникально и всегда одинаково для моей учетной записи Google? Так что URL-адрес идентифицирует меня?

Если я все правильно понял, ответ «Да, это так!».

Почему они не использовали https://www.google.com/accounts/o8/id?u= {Google-имя} вместо этого загадочно ...? ID = AltOawk ...?

Я думаю, они хотят быть в безопасности для будущих изменений в вашей учетной записи, если вы, например (сейчас или в будущем), сможете изменить свое имя пользователя, тогда вам, вероятно, понравится, что это будет отражено в вашем Идентификатор OpenId - тоже, но тогда у вас будут проблемы! все ваши регистрационные данные для вашего старого заявленного идентификатора не будут оценены. Подробнее читайте здесь: http://wiki.openid.net/w/page/12995200/OpenID-Security-Best-Practices и здесь: http://blog.nerdbank.net/2008/07/case-for-case-sensitive-openid-url.html

+3

Относительно «Да, это!»: На самом деле это зависит от сферы. Если вы входите в Gmail на example.com и в anotherdomain.com, вы получите разные хэши. Зачем? Я также полагаю, что это вопрос конфиденциальности (в дополнение к той причине, о которой вы говорили). Поскольку вы не получаете одинаковый id = ... «хэш», когда вы посещаете разные сайты, вы можете быть очень анонимным, если хотите. – KajMagnus