Открытый идентификатор 2.0 говорит, что во время обнаружения
Идентификаторы URL ДОЛЖНЫ быть далее нормализованы путем следующих перенаправлений при извлечении их содержимого и, наконец, применения правил в Разделе 6 [RFC3986] к окончательному целевому URL. Этот окончательный URL-адрес ДОЛЖЕН быть отмечен проверяющей стороной в качестве заявленного идентификатора и использоваться при запросе аутентификации.
Итак, в соответствии с этим вы должны взять предоставленный пользователем идентификатор и нормализовать его, выполнив перенаправления и выполнив обычные процедуры нормализации URL.
Результат считается «заявленным идентификатором» (CI). Затем вы выполните танец ассоциации и определите, верно ли это утверждение.
Примечание. Некоторые провайдеры имеют «общеизвестный» URL-адрес провайдера OpenId (OP), например, Google. Если вы заметили процесс входа в StackOverflow, вы можете просто нажать кнопку Google вместо заполнения формы. В этом варианте «общеизвестный» OP-URL не является CI пользователя. Пользователь не предоставил вам CI. Вам нужно подождать, пока вы закончите танец аутентификации, и Google скажет вам, кто пользователь.
Именно в этот момент (после получения успешного обратного вызова ассоциации от поставщика OpenId) у вас будет идентификатор для пользователя. В разделе 9.1 вы ДОЛЖНЫ получить либо openid.claimed_id
и openid.identity
, либо ни одно из полей, если вы делаете что-то необычное с расширениями (я не очень знаком с этим аспектом спецификации).
Теперь вы должны хранить openid.claimed_id
на своем конце - это будет идентификатор, уникальный для этого пользователя. Это может отличаться от того, что пользователь изначально предоставил вам. Он также может отличаться от того, где вы оказались (после перенаправления на предоставленный пользователем идентификатор). У поставщика OpenID есть последнее слово.
В отношении безопасности следующих перенаправлений на предоставленный пользователем идентификатор. Здесь не должно быть проблемы. Перенаправления позволяют пользователю делегировать проверку подлинности поставщику по своему выбору. Независимо от того, куда вас ведут перенаправления, вы в конечном итоге попросите, чтобы поставщик OpenId установил с вами связь. Когда вы делаете этот запрос, вы предоставляете (нормализованный) заявленный идентификатор, и поставщик может решить, желают ли они нести ответственность за заявленный идентификатор, и они (каким-то образом, исходя из своей бесконечной мудрости) разрешат, что пользователь владеет этим заявленным идентификатор.
Возвращаясь к Google, заявленный идентификатор Google в итоге предоставит вам не похожий на ваши примеры выше. В качестве примера они используют openid.claimed_id=https://www.google.com/accounts/o8/id/id=AItOawl27F2M92ry4jTdjiVx06tuFNA
( source ).
Надеюсь, это поможет ...