【问题标题】:DotNetOpenAuth I need some help pleaseDotNetOpenAuth 我需要一些帮助
【发布时间】:2011-01-12 05:28:50
【问题描述】:

我知道这之前已经发布过,但从未真正回答过,我正在使用 DotNetOpenAuth 尝试进行 GoogleID 登录,每次我做 details = OResponse.GetExtension<ClaimsResponse>(); 我总是,总是,总是返回 null,我不'如果我无法取回任何信息,我不知道 GoogleID 的意义何在,我想至少我会得到一个电子邮件地址,这样我就可以将它与我的数据库中的其他登录信息相关联。我只是不明白真的可以使用一些帮助,我可能只是以错误的方式查看 openID。

我正在使用 ASP.NET 并希望使用 openID/Facebook 作为我登录用户的唯一方式,我真的不想弄乱会员角色或 ASP.NET 喜欢添加的额外垃圾。

【问题讨论】:

  • 我已经尝试了 openautho dll 中包含的简单控件,我已经尝试了这个midnightprogrammer.net/post/…,即使那个项目返回 null,你只是应该使用响应返回的 URL ,那会是你的唯一标识符吗?
  • 现在没时间帮忙,但请查看test-id.org -- 你可以从那里提出请求,看看它是否真的是谷歌或者它是否是你的目标
  • 是的,您应该始终使用IAuthenticationResponse.ClaimedIdentifier作为唯一标识符。

标签: c# asp.net openid dotnetopenauth


【解决方案1】:

是的,这个问题已经被问过很多次了。 Google确实支持 AX。但它忽略任何标记为“可选”的属性。因此,如果您想要电子邮件地址,则必须说电子邮件地址是必需的属性。

您正在检查的 ClaimsResponse 扩展名不是 AX -- 它是简单注册。但是,如果您启用了 AXFetchAsSregTransform 行为(强烈推荐),那么它允许您仅使用 ClaimsRequestClaimsResponse,并且 DotNetOpenAuth 将自动为您在 AX 幕后转换。

或者,您可以使用 FetchReqestFetchResponse 直接与 Google 对话。

但是(我不能再这么狠狠地锤了),不要使用电子邮件地址作为用户的唯一标识符!!!而是使用@987654328 @string 作为唯一标识符。电子邮件地址通常应被视为可用于预先填写注册表单的有用提示。您甚至不应该相信您获得的电子邮件地址确实在用户的控制之下(这是不应将其视为其唯一 ID 的原因之一),因为提供者可能会对您撒谎。谷歌和雅虎是两家承诺(如果您选择信任他们)电子邮件地址已经过验证的提供商,因此如果您愿意,您可以跳过他们的用户的电子邮件验证步骤。

【讨论】:

  • 所以我假设声明标识符在多个站点中是唯一的?是的,我确实打开了 AXFetcheSregTransform,我已经在多个站点/帖子中看到了这一点。我尝试了 FetchRequest/Response,但无济于事,我尝试了一些东西,例如混合和匹配、请求/所需级别。但是我确实找到了一个链接,可以让您在 google 上注册您的域名,这可能是解决方案的一部分。
  • ClaimedIdentifier 对于每个用户都是唯一的。它也可能在每个“领域”(或站点)上是唯一的(Google 也是如此)。
  • 如果您想包含您尝试使用 Google 的身份验证请求(和响应)的日志,我们可以查看它以找出问题所在。根据我的经验,您无需注册您的网站即可从 Google 获取电子邮件地址。
  • 你指的是什么日志?您是否建议在进出时捕获 html 数据包......
  • DotNetOpenAuth 激活时发出的日志。见dotnetopenauth.net/developers/code-snippets/…
【解决方案2】:

Google 的 OpenID 服务器似乎不支持 AX 或 sreg。

【讨论】:

  • 好的,也许你可以帮助我更好地理解 OpenID,我不明白你在响应中作为唯一标识符得到了什么,在我看来,如果你没有得到一些唯一标识符似乎没有什么意义。
  • 我自己对 OpenID 的探索还没有走那么远,抱歉。
  • stackoverflow 无法获取您的 google 电子邮件地址吗?
  • 告诉我。我什至找不到任何关于有状态 OpenID 工作原理的真实可读文档。
  • 我在某处读到 Google 支持 AX(仅),但我不记得来源了,抱歉。是的,StackOverflow 收到了来自 Google 的电子邮件——我在其他地方也听说过这个工作的故事 :-)