Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 是否将IdentiyServer用于具有asp.net核心的仅限外部登录提供商的web应用程序_Angularjs_Asp.net Core_Asp.net Identity_Identityserver4 - Fatal编程技术网

Angularjs 是否将IdentiyServer用于具有asp.net核心的仅限外部登录提供商的web应用程序

Angularjs 是否将IdentiyServer用于具有asp.net核心的仅限外部登录提供商的web应用程序,angularjs,asp.net-core,asp.net-identity,identityserver4,Angularjs,Asp.net Core,Asp.net Identity,Identityserver4,我正在用 Asp.net核心2.0 Web API AngularJS 4+ SQL Server 用户只能通过Google/Facebook/LinkedIn注册/登录。我将把从他们那里收到的用户名和电子邮件等用户信息保存到SQL db表中。我没有计划在我的网站上使用电子邮件和密码进行手动注册。我不想维护用户凭据,忘记密码,保护用户密码以及所有与此相关的细节 到目前为止,还没有建立移动应用程序的计划。我正在学习.Net Core,偶然发现IdentityServer 4是在asp.Net

我正在用

  • Asp.net核心2.0 Web API
  • AngularJS 4+
  • SQL Server
  • 用户只能通过Google/Facebook/LinkedIn注册/登录。我将把从他们那里收到的用户名和电子邮件等用户信息保存到SQL db表中。我没有计划在我的网站上使用电子邮件和密码进行手动注册。我不想维护用户凭据,忘记密码,保护用户密码以及所有与此相关的细节
到目前为止,还没有建立移动应用程序的计划。我正在学习.Net Core,偶然发现IdentityServer 4是在asp.Net Core应用程序中提供身份的推荐方法。我浏览了所有文档、示例,并尝试了几个示例应用程序。我想我很清楚identityserver的配置和工作流程

我的问题是

  • 在我的体系结构中使用IdentityServer4是否值得,因为我的身份仅是外部提供者?我正在考虑将默认Asp.net标识与.AddCookie()、.AddGoogle()和.AddJwtBearer()一起使用,以从Google/Facebook/LinkedIn检索cookie,使用AddGoogle-AddFacebook-AddLinkedIn中间件处理回调,提取ClainPrincipal并将Angular JS应用程序的Jwt令牌设置为在其XMLHttp请求中使用
  • 除了在一个地方进行身份验证最佳实践之外,将此工作外包给IdentityServer 4还有什么好处

我非常感谢您在这方面的宝贵反馈。

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

需要澄清的一点是,您不需要ASP.NET Identity和所有用于Google、LinkedIn等的中间件。如果您的客户端确实是一个Angular javascript应用程序,那么它不需要像ASP.NET Core这样的服务器端组件—它只是一个浏览器应用程序。您可以使用像oidc客户端这样的javascript库,并根据自己的需要配置外部身份验证提供程序。您将收到一个id_令牌和/或access_令牌以存储在浏览器中,并以气候方式传递给您的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_令牌。

认为投票结果有点苛刻。这是一个关于一个主题(auth)的有效问题,它从来没有像应该的那么简单。谢谢你有深刻见解的回答。我的客户端是100%Angular 4+,服务器端只有Asp.net核心Web API。Angular应用程序不属于MVC项目/解决方案,但最终它会构建到web api的wwwroot文件夹中。如果我从Google/Facebook接收到令牌并将其保存到浏览器html中,而不是发布到服务器端,我将如何在数据库中创建/更新用户数据?您将在http请求中将令牌发送到服务器。它将包含数据库的标识信息。