我是否存储了所有ClaimedIdentifier?

时间:2011-01-17 00:55:29

标签: openid dotnetopenauth

我正在使用dotnetopenauth,我想知道我应该从claimIdentifier存储什么。我认为这只是一个id,但似乎也有一个网址。

当我做

之类的事情时
Identifier claimedIdentifier = openIdRelayingParty.ClaimedIdentifier;

我得到了

//雅虎

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

// google

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

所以我要存储整件事还是只存储长字符串?如果我应该存储长字符串,那么如何将其提取出来?似乎每个提供程序格式都有点不同。

1 个答案:

答案 0 :(得分:3)

您应该存储整个网址,包括片段部分。片段部分是某些URL末尾的#fragment。例如,我认为每个Yahoo ClaimedIdentifier实际上都包含这样一个片段:

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

存储整个 ClaimedIdentifier非常重要,后来用于识别同一个人。另外,请确保您的身份检查为case sensitive使用System.Uri.Equals方法验证两个ClaimedIds是否相同。如果只有#fragment不同,不正确,它会返回true。您应该使用Identifier.Equals或简单的String.Equals(string, string, StringComparison.Ordinal)方法。

或者,如果您从数据库中的users表中查找用户,请确保您的users表配置为对ClaimedId列区分大小写。