使用IdentiyServer是否仅适用于具有asp.net核心的外部登录提供商Web应用程序

时间:2017-09-27 13:49:46

标签: angularjs asp.net-core asp.net-identity identityserver4

我正在使用

构建一个Web应用程序
  • Asp.net Core 2.0 Web API
  • AngularJS 4 +
  • SQL Server
  • 用户只能通过Google / Facebook / LinkedIn注册/登录。我会将用户信息(例如我从其收到的姓名和电子邮件)保存到SQL db表中。我没有计划通过电子邮件和密码在我的网站上提供手动注册。我不想维护用户凭据,忘记密码,保护用户密码以及周围的所有细节。

截至目前,尚无计划构建移动应用。我正在学习.Net Core并偶然发现IdentityServer4是一种在asp.net核心应用程序中提供身份的推荐方法。我浏览了所有文档,示例并尝试了一些示例应用程序。我想我很清楚身份服务器的配置和工作流程。

我的问题是

  • 在我的架构中是否值得使用IdentityServer4,因为我的身份只是外部提供商?我正在考虑使用默认的Asp.net Identity with.AddCookie(),. AddGoogle()和.AddJwtBearer()从Google / Facebook / LinkedIn检索cookie,使用AddGoogle AddFacebook AddLinkedIn中间件来处理回调,提取claimprincipal并设置Jwt Angular JS app在其XMLHttp请求中使用的标记。
  • 除了身份在一个地方的最佳实践中,我还将这项工作外包给IdentityServer4有什么好处?

我很感激您对此的微小或重大反馈。

1 个答案:

答案 0 :(得分:2)

IdentityServer非常适合处理访问许多受保护资源的许多客户端。您似乎有一个客户端(所谓的AngularJS 4+应用程序)和一个资源,Asp.net Core 2.0 Web API。

清楚的一点是,您不需要ASP.NET身份以及Google,LinkedIn等所有中间件。如果您的客户端是真正的Angular javascript应用程序,那么它不需要像ASP这样的服务器端组件.NET Core-它只是一个浏览器应用程序。您可以使用像oidc-client这样的javascript库,并根据自己的需要配置外部身份验证提供程序。您将收到一个id_token和/或access_token,以便存储在浏览器中并完全传递给您的Api资源。

说到您的Api资源,此应用程序可以直接与令牌发行者进行验证,无论是Google还是Facebook或其他任何人。

使用此设置:(a)浏览器应用程序(Angular),(b)服务器WebApi(ASP.NET CORE)和(c)以及身份/访问控制服务(Google,Facebook等)您当然不需要运行ASP.NET Identity或IdentityServer4的任何其他应用程序。似乎没有它们会更容易。

如果你的Angular应用程序实际上是在ASP.NET MVC中,那么同样如此。

如果您的Angular应用程序和WebApi都属于一个ASP.NET项目,那么同样如此,您只需要一个身份提供程序来返回id_token。