gpt4 book ai didi

c# - 使用 DotNetOpenAuth 以双向方式将一个站点连接到另一个站点

转载 作者:行者123 更新时间:2023-11-30 16:18:28 25 4
gpt4 key购买 nike

我想使用 DotNetOpenAuth 建立从一个具有 DotNetOpenAuth 的站点到另一个具有 DotNetOpenAuth 的站点的连接,以便它们可以使用彼此的 api。目标是必须进行一次授权,然后他们才能在彼此之间做事。它们必须是两个不同的站点,都是 C# 城堡项目。老实说,大约有 5 个需要彼此交谈并使用彼此的 api,所以我只想存储一次连接而不用担心它们会断开连接。我设置了数据库来存储我认为的 session 和 token ,但事实证明,DotNetOpenAuth 的文档没有那么有用。 (在撰写本文时 DotNetOpenAuth api doc's 网站已关闭) 我不清楚这 web.config 是否已关闭设置是我需要做的所有事情,这对我来说似乎很奇怪,或者如果有一些例子可以更详细地设置我要问的问题。

它的核心问题很简单,您如何设置一个站点以授权另一个站点并仅存储一次。我的想法是,我不知道最终会有多少这样的微型网站,只是他们必须建立双向授权连接,然后使用彼此的 api。

我所需要的只是一个为网络应用程序设置提供商和为网络应用程序设置客户端的详细示例。我敢肯定他们不会在同一个例子中,但我很难找到任何一方一步一步明确的事情。少数令人费解的示例是 MVC 示例,这无助于轻松了解其核心。

最终目标是(站点 A)连接到(站点 B)和(站点 C),其中(站点 C)连接到(站点 A)和(站点 D),这意味着(站点 A), (站点 B)、(站点 C)、(站点 D)既是提供者又是客户,我们通常将 token 存储在数据库中的 session 中(从客户的角度来看)。除了如何清楚地创建提供者和如何创建客户端的示例之外,不需要更多,因为其余部分在存储时会很明显。

更新我一直在尝试整合 this example ,因为这是我能找到的最好的。问题在于,它更像是一个作为应用程序的提供者,而不是一个既有提供者又有消费者的网站。该示例的问题在于它并没有真正与文件对齐​​。它轻而易举地超越了关键部分的想法。

可视化概念

enter image description here

最佳答案

您可以将其用作 base for your AuthorisationServer在所有 API 解决方案中实现和共享库。

您提到的集中式解决方案可能是一个不错的计划,具体取决于您希望如何构建各种 API 实现的整体架构。真的很难在这方面提出任何建议,因为这实际上取决于您希望它们如何结合在一起。

如果您采用集中式方法,则必须为每个 API 提供一个 key 和一个 secret ,并在数据库的 ClientAuthorisation 表中为每个 API 创建一个条目。我的授权表目前看起来像这样:

CREATE TABLE [dbo].[ApiClientAuthorizations](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[CreatedUtc] [datetime] NOT NULL,
[ApiClientId] [bigint] NOT NULL,
[UserProfileId] [bigint] NOT NULL,
[Scope] [nvarchar](max) NULL,
[Expires] [datetime] NULL,

此处的关键字段是 Scope,它定义了任何客户端的访问级别。据我所知,如果您真的想让其他系统开始使用您的实现来使用您的系统作为他们的身份存储来保护他们自己的服务,那么您只需要实现一个提供者,我真的认为您不需要这样做以满足您对此的要求。

我发现让大量示例实际工作非常耗时,但示例中的代码确实非常好,值得仔细研究以更好地了解引擎盖下实际发生的事情。

关于c# - 使用 DotNetOpenAuth 以双向方式将一个站点连接到另一个站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16096442/

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