【问题标题】:DotNetOpenAuth: How to implement a simple OpenId provider?DotNetOpenAuth:如何实现一个简单的 OpenId 提供者?
【发布时间】:2010-08-24 14:21:08
【问题描述】:

每个 OpenId 提供者都有一个提供者 URL(例如 Google:https://www.google.com/accounts/o8/id

使用OpenIdRelyingParty.CreateRequest 我成功地将用户重定向到谷歌提供者网址并接收提供者回调。一切正常。

现在我正在尝试实现我自己的简单 OpenId 提供程序(我想在我的示例中充当 Google)。 DotNetOpenAuth 有一个名为 OpenIdProviderWebForms 的提供程序演示。在过去的 4 或 5 个小时里,我一直在尝试使用我设法在 Google 上连接的同一个演示连接到它。首先:我不清楚我应该调用什么 URL。我尝试了所有 Url(server.aspx、provider.ashx ...),它们都触发了异常“未找到 OpenID 端点”。所有的配置似乎都很好。

如何实现一个简单的 OpenId 提供程序?我应该在OpenRelyingParty.CreateRequest 中调用什么网址?

【问题讨论】:

    标签: c# .net dotnetopenauth


    【解决方案1】:

    首先让我们建立一些术语:

    User-supplied identifier 是用户实际键入的字符串(或通过单击 RP 上的预定义按钮触发),触发 OpenID 发现。它没有被规范化,并且永远不应该用于表示数据库中的用户,因为它不安全或不唯一,但它是一个必要的起点。发现此标识符会产生 claimed identifierOP Identifier。示例:yahoo.com、myopenid.com、andrewarnott.myopenid.com

    Claimed Identifier 是用户“控制”或用作其身份的 OpenID 标识符。它可能不是是一个URL(它可能是一个XRI)。来自 OP 的肯定断言将始终是声明的标识符(即使发现以 OP 标识符开始)。示例:https://andrewarnott.myopenid.com/

    OP Identifier 或“OpenID Provider Identifier”是 RP 可以在其上执行发现以开始 identifier select 流的 OpenID 标识符,其中 RP 尚不知道用户的声明标识符将是什么。示例:https://me.yahoo.com/http://www.myopenid.com/https://www.google.com/accounts/o8/id

    OP Endpoint 是 RP 将用户重定向到以验证用户身份的实际 URL,用于建立共享关联或执行使用 OP 私有关联的断言的直接验证。示例:http://localhost/server.aspxhttp://localhost/provider.ashxhttps://www.google.com/accounts/o8/ud(注意 ud 结尾而不是 id)

    因此,在所有这些背景下,您的 OpenIdRelyingParty.CreateRequest 调用应该会收到用户提供的标识符,该标识符也可能是声明的标识符或 OP 标识符。它应该是 OP 端点。因此,例如,您可能会传入:

    openIdRelyingParty.CreateRequest("http://localhost/sampleop/")
    

    openIdRelyingParty.CreateRequest("http://localhost/user.aspx?username=bob")
    

    【讨论】:

    • 安德鲁,非常感谢您对所有这些解释 +1。它确实帮助我澄清了这些概念。我成功地使 2 个 DotNetOpenAuth 演示相互连接(OP 和 RP),但我无法创建自己的 OP 并连接到它。继续收到“未找到 OpenId 端点”,这不是一个非常解释性的错误。您的项目 (DotNetOpenAuth) 看起来很棒,但缺少文档。事实上,我认为 openid 本身缺乏文档。我在其他任何地方都找不到这些概念。还是谢谢你:)
    • @André Pena,我几天来一直在努力让我的 OP 工作。但它与您遇到的问题相同。你解决过这个问题吗?
    【解决方案2】:

    对于 DotNetOpenAuth MVC 示例,要使用的 Open Id Identifier url 是 http://localhost:4864/User/Identity(其中 OpenIdProviderMvc 配置为在 localhost 的端口 4864 上运行)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多