.NET Core Identity与IdentityServer4的区别

74

问题: 我应该使用 .Net Core Identity 还是 IdentityServer 4 with Identity?

我需要构建一个具有登录/注册功能的应用程序,并允许用户使用API来导入/导出我的软件中的数据。我还想拥有像Google、Twitter等外部登录。

我无法理解为什么在只使用Identity就可以完成所有事情的情况下,我需要Identity Server。

我为什么需要或希望使用IdentityServer?我只需要尽可能简单地完成工作。


2
https://medium.com/the-new-control-plane/all-this-microsoft-membership-identity-stuff-whats-it-about-4db18dccd9d8 - rbrayb
如果我不打算集成第三方登录,那么忽略或移除我的应用程序中的IdentityServer是否可以呢? - Nest
2个回答

59

你真的不能将这两者进行比较。

ASP.NET Identity是一个数据库API,用于管理用户、角色、声明、电子邮件确认令牌等。它可以用于实现注册、登录、更改密码等功能。

IdentityServer是一个OpenID Connect和OAuth 2.0的实现。它提供单点登录和API访问控制等功能。如果你想在多个客户端应用程序之间共享用户,那么这将非常有用。

你可以将它们组合起来 - 在中央登录页面上使用IdentityServer进行协议工作,使用ASP.NET Identity进行用户管理。


2
@kuldeep 协议工作最有可能是授权流程,请求令牌等内容。 - ViRuSTriNiTy

44

这要看情况而定。

IdentityServer 可以为您提供 OAuth 2.0 和 OpenID Connect 实现,并且会处理所有细节(例如,提供端点、令牌管理、范围、授权等)。它独立运行,因此您可以将其用于多个客户端(SPA、移动应用、Web 应用),并且与您的应用程序其他部分完全隔离。如果您希望如此,还可以与 ASP.NET Core Identity 一起使用。

如果您不使用 IdentityServer,则必须自行编写其中的一些内容,因为 ASP.NET Core Identity 是一个成员身份系统,不提供任何可用的端点,也没有令牌管理或支持不同的授权方式。

您需要评估是否最好自己编写这些内容,但是可能会更加简单,因为您可能并不需要 IdentityServer 提供的所有功能,尽管这可能会限制您的未来发展。

您还可以查看OpenIddict,它比 IdentityServer 更简单。


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