【问题标题】:Creating an OpenID provider with DotNetOpenAuth使用 DotNetOpenAuth 创建 OpenID 提供程序
【发布时间】:2012-09-06 16:33:57
【问题描述】:

我正在尝试使用 DotNetOpenAuth 实现 OpenID 提供程序。我提供了一个 OpenID url,消费者发现了我的端点。

我登录到我的提供者,提供者返回一个声明标识符和一个本地标识符给消费者。

但消费者响应有以下异常:

The OpenID Provider issued an assertion for an Identifier whose discovery information did not match. 
Assertion endpoint info: 
  ClaimedIdentifier: http://localhost/OpenIDUser.aspx/myuser
  ProviderLocalIdentifier: http://localhost/OpenIDUser.aspx/myuser 
  ProviderEndpoint: http://localhost/OpenIDAuth.aspx
  OpenID version: 2.0 
  Service Type URIs: 
Discovered endpoint info: []

http://localhost/OpenIDAuth.aspx 是我的端点。 http://localhost/OpenIDUser.aspx/myuser 是我的用户标识符 url,我可以成功浏览到它。它在标头中有一个指向端点的链接,如下所示: <link rel="openid.server" href="http://localhost/OpenIDAuth.aspx"></link>

无论我尝试什么,异常的“发现的端点信息:[]”部分始终是一个空数组。

有人可以帮忙吗?

【问题讨论】:

  • 原来用户身份 url 在表单身份验证配置中受到保护,这阻止了用户身份的发现成功。

标签: openid dotnetopenauth


【解决方案1】:

令人费解的是,您已经走到了这一步,因为要看到此错误,RP 必须能够在重定向到 Provider 之前成功完成发现阶段(在这种情况下,它为什么会第二次失败)或者这是一个不请自来的断言(这很好,但不寻常)。

但我看到的一个缺陷是您的标签:

<link rel="openid.server" href="http://localhost/OpenIDAuth.aspx"></link>

是 OpenID 1.1 的广告,而您的 Provider 声明的是 OpenID 2.0。 IIRC,正确的标签是:

<link rel="openid2.provider" href="http://localhost/OpenIDAuth.aspx"></link>

还有一个提示:当您开发 Provider 并使用 DotNetOpenAuth RP 对其进行测试时,请务必将 RP(也可能是 OP)设置为不在 web.config 中缓存发现结果,以便您知道您当前的代码实际上是当前的成功和失败:

<dotNetOpenAuth>
    <openid cacheDiscovery="false">

可以看到更多的配置选项,以及上面xml出现的上下文in the docs

【讨论】:

  • 对不起,我弄错了。我的用户标识符页面确实有 &lt;link rel="openid2.provider" href="http://localhost/OpenIDAuth.aspx"&gt;&lt;/link&gt; 以及 OpenID 1.1 链接。
  • 我从用户 xrds 文档中删除了一行空白(在第一个 xml 声明下),我能够成功登录!我添加了该行以进行验证,但它停止了工作。并且再次删除该行不再起作用。我正在尝试调试 DotNetOpenAuth 依赖方代码,但出现此错误:Could not load file or assembly 'DotNetOpenAuth.OpenId' or one of its dependencies. Strong name signature could not be verified。我发现了一个建议,我首先运行“sn -Vr *,2780CCD10D57B246”,但随后出现错误“无法打开注册表项”。
  • 除非您自己构建 DNOA(通常没有必要),否则您不应该收到签名错误。至于成功、失败、然后仍然失败的场景,您可能正在经历发现缓存。我已添加到我的答案中,以说明如何在测试期间将其关闭。
  • 这对我不起作用。我们将 cacheDiscovery 设置为 false 并尝试从 xrds 中消除任何空白。另外,你能更新文档的链接吗?它是 404。关于修复此@AndrewArnott 的任何其他建议?
猜你喜欢
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多