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

В спецификациях OpenID это говорит:

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

Идентификатором является просто URL. Целый поток Протокола аутентификации OpenID о доказательстве, что Конечный пользователь, владеет, URL.

  • Требуемый идентификатор:

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

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

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

  • Поставщик идентификационных данных:

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

  • Действительно ли URL идентификатора уникален? Что точно это?

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

  • Каково различие между IdP и URL идентификатора?

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

  • Действительно ли URL конечной точки OpenID является тем же как IdP? Таким образом, IdP является также URL?

Давайте возьмем, Гуглит OpenID как пример. Когда некоторый сайт просит у меня вход в систему OpenID, я использую OpenID URL 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? Или это - IdP URL (если это - что-то другое)?

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

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

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

  • Каков URL конечной точки OpenID? (Каков IdP URL?)

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

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

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

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

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

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

Существуют также условия "Сервер OpenID" (URL) и "Делегат OpenID" (URL).

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

  • Каковы "Идентификационные данные OpenID"? То же как URL идентификатора OpenID?


См. также связанный вопрос: Как OpenID расходится между различными логинами в той же конечной точке OpenID?

(Вопрос о Meta: я должен, возможно, разделить это в большом количестве независимого политика ТАК вопросы? Я боюсь, что не могу получить ответы для всех своих вопросов иначе.)

15
задан Community 23 May 2017 в 12:34
поделиться

1 ответ

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

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

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

  • URL верифицированного идентификатора = identity

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

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

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

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

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

Все же некоторые вещи остаются для меня неясными:

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

  • Зачем вообще нужен такой OpenID realm?

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

5
ответ дан 1 December 2019 в 05:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: