gpt4 book ai didi

c# - DotNetOpenAuth:如何实现简单的 OpenId 提供程序?

转载 作者:太空狗 更新时间:2023-10-29 22:08:43 28 4
gpt4 key购买 nike

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

使用 OpenIdRelyingParty.CreateRequest 我成功地将用户重定向到 Google 提供商 Url 并接收到提供商回调。一切正常。

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

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

最佳答案

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

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

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

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

OP 端点 是 RP 将用户重定向到以验证用户身份的实际 URL,用于建立共享关联或对使用 OP 私有(private)的断言执行直接验证协会。示例:http://localhost/server.aspx , http://localhost/provider.ashx , https://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")

关于c# - DotNetOpenAuth:如何实现简单的 OpenId 提供程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3557430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com