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