使用Dotnetopenauth时,Google帐户的ClaimedIdentifier

时间:2011-02-28 14:43:49

标签: dotnetopenauth

我目前正在从Janrain engange(rpxnow)切换到dotnetopenauth。在我的数据库中,我将来自我的用户的声明标识存储在表单

https://www.google.com/accounts/o8/id?id=AItOawnVaDz_Os6ysv4-tB0zlhFan1ltyHWa10k

当使用engange时,我能够在dev,test和prod环境之间切换,声称的Ids将始终保持不变。 所以我觉得使用dotnetopenauth时这些ID也是一样的。令我惊讶的是,它们很熟悉但并不完全相同。让事情变得更加混乱的是,当我改变我的webapp的路径时,例如,从http://localhost/http://localhost/mvc,声明的标识符也会更改。

有人可以对此有所了解并帮助我让我的ids从环境移动到另一个

顺便说一句:移动其他帐户类型(例如yahoo)没有问题

1 个答案:

答案 0 :(得分:6)

Google利用OpenID的一项名为“定向身份”的功能,这意味着它发送RP的声明标识符对于为每个唯一RP登录的同一Google帐户而言会有所不同。雅虎和其他提供商不会利用此功能,因此您只能在Google帐户中看到它。

Google用来区分每个RP的关键是IAuthenticationRequest.Realm属性,默认情况下DotNetOpenAuth设置为您网站的根URL。这就是为什么不同的托管网址(例如http://localhosthttp://localhost/mvc)会获得不同的声明标识符。

Janrain Engage有各种服务级别,其中一些(我最后检查过)使用自己的域名,将您的RP名称作为第三级域名包含在内,作为Realm,可以由于声明的标识符都会发生变化,导致您的所有Google客户都无法访问您网站上的帐户,因此很难或无法停止使用他们的服务。然而,最后我听说,Janrain存储了一些特殊的帐户详细信息,以便可以迁移他们的服务。我建议你联系他们的支持人员,询问他们的流程是什么。