Хранить ли весь ClaimedIdentifier? - PullRequest
1 голос
/ 17 января 2011

Я использую dotnetopenauth, и мне интересно, что я должен хранить от заявленного идентификатора.Я думал, что это будет просто идентификатор, но, похоже, у него тоже есть URL.

Когда я делаю что-то вроде

Identifier claimedIdentifier = openIdRelayingParty.ClaimedIdentifier;

, я получаю

// Yahoo

https://me.yahoo.com/a/2RCv_bQ7341PA3v4irf5tzu_9K_fF1414afa414

// google

https://www.google.com/accounts/o8/id?id=AItOawmMvmoomT7lOO5jwEaAd1414dfafaf241VUI

Так я храню всю эту вещь или только длинную строку?Если я должен хранить длинную строку, то как ее извлечь?Кажется, что форматирование каждого провайдера немного отличается.

1 Ответ

3 голосов
/ 17 января 2011

Вы должны хранить весь URL, включая фрагмент часть. Часть фрагмента - это #fragment в конце некоторых URL. Например, я думаю, что каждый Yahoo ClaimedIdentifier на самом деле включает в себя такой фрагмент:

https://me.yahoo.com/a/2RCv_bQ7341PA3v4irf5tzu_9K_fF1414afa414#aHd88

Крайне важно, чтобы весь ClaimedIdentifier был сохранен, а затем использован для идентификации того же лица. Кроме того, убедитесь, что ваша личная проверка чувствительна к регистру . не используйте метод System.Uri.Equals, чтобы убедиться, что два ClaimedIds эквивалентны. Он вернет true в тех случаях, когда отличается только #fragment, что не правильно . Вы должны использовать Identifier.Equals или простой String.Equals(string, string, StringComparison.Ordinal) метод.

Или, если вы ищете пользователя из таблицы пользователей в базе данных, убедитесь, что ваша таблица пользователей настроена с учетом регистра для столбца ClaimedId.

...