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表中。我没有计划在我的网站上使用电子邮件和密码进行手动注册。我不想维护用户凭据,忘记密码,保护用户密码以及所有与此相关的细节
- 在我的体系结构中使用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请求中将令牌发送到服务器。它将包含数据库的标识信息。