【问题标题】:Are there any better alternatives to DotNetOpenAuth? [closed]DotNetOpenAuth 有更好的替代品吗? [关闭]
【发布时间】:2011-08-20 23:29:59
【问题描述】:

我真的很想喜欢 DotNetOpenAuth,这是一个用于 .Net 的 OpenId、OAuth 库,但它真的不适合我。
首先,它似乎不适用于单声道(示例因 web.config 错误或其他错误而失败)。
其次,我不需要库的 99% 的功能,我想要的只是一些简单的东西,可以为我处理 OpenId/OAuth 客户端使用的复杂性。我不需要编写 OpenId 服务器——我只希望我的用户点击“使用 Google 登录”按钮 :-)

我想要做的就是有一组按钮让用户登录我的网站(任何一个都很好,三个都有):

  • Facebook(不支持 OAuth,所以不太可能)
  • 推特
  • 谷歌

是否有任何简单、可用的替代方案可以给我类似的东西:

  1. 将 sn-p 或组件放入页面中
  2. 理想情况下,它会简单地设置HttpContext.Current.User
  3. 与会员资格集成 - 基本上使用会员资格来跟踪之前访问过网站的人员。

?

【问题讨论】:

  • 我怀疑你会找到一个“简单”的答案,因为无论你最终得到什么,它都将是一个相当复杂的 API 的包装器。一句警告:Facebook does not support OpenId,因此任何支持您上面列出的三个提供程序的解决方案都不是微不足道的。
  • 你试过DNOA的mono分支了吗:github.com/AArnott/dotnetopenid/tree/mono2
  • @szt 不幸的是,它甚至没有编译,因为实际上 它有特定于 windows 的 deps... :-(
  • @Skilwz:对不起,我的错。一年前,我修补了实际的分支,并在几个项目中使用了它:github.com/sztupy/dotnetopenid 但它是一个非常古老的分支......
  • 对于任何阅读本文并考虑使用 Open ID 的人来说,似乎至少有 Google has deprecated it。使用 Open ID Connect 的文章在墙上,令人困惑的是,它构建在 OAuth2 之上,而不是 Open ID 之上。

标签: c# oauth openid


【解决方案1】:

(自我承认的偏见警告:DotNetOpenAuth 的作者)

DotNetOpenAuth 有几个可以工作的单声道分支,并且过去一直工作。您可能会发现它们在 Linux 中的 mono 下没有构建,但在 Windows 中构建时,这些分支会生成一个应该能够在 Linux 下运行的 dotnetopenauth.dll。但是我已经有一段时间没有自己做了,所以我帮不了你太多。

Mono 并没有表现出修复错误和填补 DotNetOpenAuth 在移植到 mono 时遇到的功能漏洞的太多愿望,因此这些 mono 分支相当陈旧。

我想指出,您的“我所需要的只是一个简单的客户,而不是提供者”的评论似乎非常危险。没有 OpenID 或 OAuth 1.0 客户端是简单的。让它正确、安全,实际上是一项非常艰巨的工作。此外,一旦您拥有完全支持和安全的客户端 (RP),添加服务器端 (Provider) 实际上只是一个非常小的添加,因为 RP 和 OP 可以共享这么多代码。

所以是的,DotNetOpenAuth 支持的场景比您需要的多。但是大多数图书馆不是吗?请看An argument for the extra dependency of a library。

并给单声道开发人员写信,要求他们修复错误并填补单声道中的功能漏洞,以便 DotNetOpenAuth 在其上运行得更好。我反复问过他们,但我想他们需要听到更多开发者的要求。

【讨论】:

  • 我认为你应该从容应对批评。基本示例完全为零。一切都使用 oauth 术语。该库需要为单声道实现变通方法。把它带回家改善图书馆:-)除此之外,这不是我问题的答案...... ;-)
  • 你的批评我没有生气。但是 StackOverflow 无论如何都不是批评的论坛,而且你的问题已经过半了,在你的很多咆哮可能是通过电子邮件发送邮件列表或在项目网站上提交问题之后。我觉得你告诉我把它带回家并改进它很有趣,因为这是一个你可以改进自己的开源项目,但你自己没有捐赠任何东西(AFAIK)。停止抱怨并帮助自己。我没有或不需要单声道支持,所以有人(你!)应该“把它带回家并改进[它]”。
  • 如你所见,我也不需要 DNOA……而且,这样一个库的全部吸引力在于开箱即用的支持,缺少了……不是真的。
  • @AndrewArnott:我们在哪里可以找到 DotNetOpenAuth 的 Mono 分支?也许其中一些可以在 .NET Core 中使用..
【解决方案2】:

我发现自己处于同样的境地。用于其他平台(例如 Python)的 OAuth 库更简单、更优雅,并且似乎封装了 OAuth 中的大部分复杂性,因此从客户端的角度来看,它只是几行代码(这是精心设计的标志)图书馆,恕我直言)。

我最终选择了 Hammock - 一个帮助使用 RESTful API 的库,包括 OAuth 1.0A 支持。

【讨论】:

    【解决方案3】:

    一年前,我修补了 DNOA 的实际 mono2 分支。它确实很旧,但它可以工作(虽然只尝试了 OpenID 部分),我仍然将它用于一些项目。不知道当前的 mono2 分支仍然无法使用:(

    https://github.com/sztupy/dotnetopenid

    【讨论】:

      【解决方案4】:

      在开发自己的提供程序时,我尝试了大约 5 种不同的库,然后才选择 DotNetOpenAuth,它确实提供了最好的结果。 OpenID 的一个问题是 RP 和 IP 有时会因为实现方式的多样性而难以通信。我第一次尝试使用不同的库导致 OpenID 仅适用于我测试过的大约 50% 的网站。 DotNetOpenAuth 工作了大约 90%。从依赖方方面进行测试时,我希望有类似的性能相似之处。不过,您可以考虑的另一种选择是 Janrain 的 RPX,它的质量也很高。

      【讨论】:

        【解决方案5】:

        身份服务器 (IdSrv)

        用于 ASP.NET Core 的 OpenID Connect 和 OAuth 2.0 框架

        来源:https://github.com/IdentityServer

        观看此介绍视频https://vimeo.com/154172925

        Microsoft AspNet.Security.OpenIdConnect.Server (ASOS)

        AspNet.Security.OpenIdConnect.Server 是高级 OAuth2/OpenID 连接 ASP.NET Core 1.0 的服务器框架(以前已知 作为 ASP.NET 5) 和 OWIN/Katana,旨在提供低级、 协议优先的方法。

        来源:https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server

        OpenIddict

        OpenIddict 旨在提供一个简单易用的解决方案 在任何 ASP.NET Core 应用程序中实现 OpenID Connect 服务器。

        来源:https://github.com/openiddict/openiddict-core

        【讨论】:

          【解决方案6】:

          不完全是 DotNetOpenAuth 的替代品,尽管我相信它可能对您有所帮助。 为了解决类似的问题——我只需要简单的登录 OpenID 屏幕——我找到了openid-selector。他们有几个非常简单的示例(可以使用 jQuery、MooTools 和原型库)如何设置类似于堆栈溢出的登录页面。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-12-06
            • 2011-02-03
            • 2011-01-31
            • 2016-03-30
            • 2013-09-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多