angularjs - 是否使用 IdentiyServer 仅用于带有 ASP.NET Core 的外部登录提供商 Web 应用程序

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

我正在构建一个网络应用程序

  • Asp.net Core 2.0 Web API
  • AngularJS 4+
  • SQL Server
  • 用户只能通过 Google/Facebook/LinkedIn 注册/登录。我将从他们那里收到的用户信息(例如姓名和电子邮件)保存到 SQL 数据库表中。我没有计划在我的网站上提供使用电子邮件和密码的手动注册。我不想维护用户凭据、忘记密码、保护用户密码以及所有相关的细节。

到目前为止,还没有构建移动应用程序的计划。我正在学习 .Net Core,并偶然发现 IdentityServer4 作为在 asp.net core 应用程序中提供身份的推荐方法。我浏览了所有文档、示例并尝试了一些示例应用程序。我想我很清楚identityserver的配置和工作流程。

我的问题是

  • 由于我的身份只是外部提供商,是否值得在我的架构中使用 IdentityServer4?我正在考虑使用默认的 Asp.net Identity 和 .AddCookie()、.AddGoogle() 和 .AddJwtBearer() 从 Google/Facebook/LinkedIn 检索 cookie,使用 AddGoogle AddFacebook AddLinkedIn 中间件来处理回调、提取 Claimprincipal 并设置 Jwt Angular JS 应用程序在其 XMLHttp 请求中使用的 token 。
  • 除了单一身份最佳实践之外,我将这项工作外包给 IdentityServer4 还能获得哪些好处?

感谢您对此提出的或大或小的反馈。

最佳答案

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

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

说到您的 Api 资源,此应用程序可以直接与 token 发行者进行验证,无论是 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。

关于angularjs - 是否使用 IdentiyServer 仅用于带有 ASP.NET Core 的外部登录提供商 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46449615/

相关文章:

javascript - AngularJS:在没有范围的字符串中编译 Angular 代码

javascript - 使用 javascript/Angular/Ionic 中的 mx 记录验证来验证电子邮件地址

c# - 创建一个从用户 secret 获取连接字符串的 DbContextFactory

c# - IdentityServer4在asp.net core中注册UserService并从数据库中获取用户

c# - 网络核心 : How to create CSS with TagBuilder?

c# - .NET Core 单元测试如何模拟 HttpContext RemoteIpAddress?

javascript - 如何从 Greasemonkey 脚本中取消选中 HTML 页面上的所有 "md-checkboxes"(不是真正的复选框)?

javascript - 以 angular 形式追加为 html

c# - CreateIdentityAsync 多次调用 FindByIdAsync

.net - ASP.NET身份验证两个因素不起作用-Cookie问题?