IdentityServer4与Auth0比较

29

我们想建立一个中央授权机构,为我们的各种应用(.net)进行身份验证和授权。我们发现IdentityServer4是开源且免费的,而Auth0需要支付费用。有人同时使用这两个吗?能否提供建议选择哪一个以及原因?


根据我对Identity Server的了解,如果您决定硬编码您的用户和客户端,则它是免费的,但是IS4不能与自定义数据库一起使用=>因此您必须购买他们的产品:Admin UI,以便您可以将所有用户保存在数据库中。如果我有误,请纠正我。 - Alexandra Damaschin
4
@AlexandraDamaschin: 我来纠正一下你的说法:IS4的演示都是在内存中进行的,但你可以自由地使用自定义实现的用户存储、客户端存储、管理等功能。其中有一些内置功能例如Asp.Identity,但其提供的功能非常基础。如果你想要一个完整的开箱即用的实现,需要花费一些钱。 - Stefan
4
@AlexandraDamaschin 这是不正确的。IdentityServer只是一个库,实现了各种身份验证方案,非常灵活可扩展。它对你实际存储用户、客户端和API信息的位置没有要求,并提供几个模板选项,包括内存(适用于简单应用程序)、数据库、文件,甚至可以使用ASP.NET成员资格框架。 - Mani Gandham
3个回答

37

IdentityServer是一个库,实现了各种身份验证协议(不是授权!),并允许您将访问控制集成到单个系统中。只要HTTP端点可用,您可以在典型的ASP.NET Web应用程序、控制台应用程序或其他任何地方托管它。它还允许您将用户数据存储在任何地方,无论是内存、数据库、平面文件、asp.net core会员系统还是其他任何地方。

Auth0是一家提供托管服务的公司,为您处理身份验证。他们运行基础设施并通过其网站和API提供访问。这类似于有人为您运行IdentityServer4,而且还有几个竞争对手,如Okta for DevsAWS CognitoAzure AD B2CGoogle Cloud Identity/Firebase等等。

如果:

  • 您想要免费的开源软件。
  • 您有时间和精力自己运行它。
  • 您希望控制后端数据存储(SQL数据库、Redis、JSON文件等)。
  • 由于法规、隐私等原因,您想自己管理所有数据。
  • 如果您需要完全控制和灵活性来管理身份验证(例如,在某人登录时合并您数据库中的用户帐户),那么选择C#代码可以实现任何您想要的功能。

如果符合以下情况,请选择Auth0:

  • 您想在实施和操作方面节省时间和精力。
  • 价格不是问题(某些功能可能会变得昂贵)。
  • Auth0提供的有限自定义足够满足您应用程序的需求。
  • 您希望使用他们提供的其他功能,如密码泄漏监控。
  • 您不想管理用户数据,或者不介意由他们存储用户数据。

Update as of Oct 2020 - IdentityServer现已成为Duende Software的产品,采用新的商业开源许可证以维持开发。还有其他替代方案,如OpenIddict仍然免费。


在你的“Auth0 if”列表中,价格不是一个因素,节省时间听起来有点互相矛盾。 建立身份服务器,使其运行,自定义它,然后运行它都需要时间和金钱。 即使对于基本情况,IdSrv也需要一些工作时间和基础设施才能运行。 在哪个点上每个成本平衡仍然是个谜... - Carl Fauteux
3
这就是为什么它说“您不介意自己运行它”,但我将更明确地表达。需要多少工作量以及使用 Auth0 的定价因情况而异,所以我无法提供更多的比较。 - Mani Gandham

2

身份认证服务器是指构建一个服务器应用程序来处理身份验证和授权,可以复制Auth0对OpenIdConnect(OIDC)的操作。即使您使用IdentityServer4,仍然需要实现一些内容。您需要首先构建它,然后集成您的应用程序。

Auth0允许您立即与OIDC集成,并提供附加的企业功能。


谢谢。所以Auth0更像Azure AD - 它是开箱即用的,但限制了自定义能力? - martial
是的,它有自己的登录界面,如果您想让Auth0处理所有身份验证,也有方法可以拥有您自己的登录页面。 - Mark Redman
1
IdentityServer也会将您重定向到其登录页面,但由于它在您的控制下,您可以自定义该登录页面的外观和感觉,但它们都以相同的方式工作,因为这就是OIDC的工作方式。 - Mark Redman
@MarkRedman 所以,我仍然对你的回答感到困惑——IS4可以用作包含多个不同应用程序用户声明信息的集中式授权“服务器”吗?就像 OP 一样,我有多个使用 Windows 身份验证的 .net 应用程序,并希望使用 IS4 作为独立的授权服务器来发送用户声明信息。我所考虑的是,IS4 公开了一个 RESTful API,该 API 根据用户名和用户正在访问的应用程序发送特定用户的声明信息。看文档,我不确定如何实现这样的功能。 - Los Morales
@los morales:可能值得浏览IdentityServer或auth0的快速入门,并阅读有关OAuth和OIDC的相关内容。这涉及到很多内容,需要一些了解如何将所有内容联系在一起。 - Mark Redman
显示剩余2条评论

2

它们都实现了联合协议,即WS-Fed、SAML和OpenID Connect。

为了使用它们,您的应用程序需要适当的客户端堆栈。

如果没有这个,你就不能使用这些产品。

唯一的选择是通过,即Auth0

或者看看ADFS,它通过ADFS WAP进行穿透。

如果您拥有堆栈,两者都可以胜任工作。

idsrv4没有用户管理门户,例如创建用户、将组添加到OOTB用户中。

Auth0有。

idsrv4本质上通过代码添加功能。Auth0通过向导进行配置。

idsrv4是开源的,所以您可以自定义其内容,让它更符合您的需求。我发现它在连接系统方面非常有用。

Azure AD是另一个选择。


似乎现在IS通过商业许可证支持客户端/用户管理。 - bvj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接