ASP.NET Core Web API + Angular 2授权和身份验证

Ant*_*jke 9 authentication oauth-2.0 asp.net-core-1.0 asp.net-core-webapi angular

我有Angular 2应用程序,它与Web API对话并执行一些基本的CRUD操作.我有几个问题:

  1. 有什么办法可以使用ASP.NET Identity在Angular 2上创建一个登录/注册页面吗?
  2. 如何使用数据进行操作仅与登录用户相关?(基于令牌的身份验证?它是如何工作的?在哪里阅读它?)
  3. 如何在不将我重定向到Identity Server的情况下在实际的Angular 2应用程序上实现登录/注册过程?

我查看了IdentityServer4,OAuth2和OpenID示例,理解起来有点过于复杂.我快速启动了每一步,它有效,但我不明白它是如何做的.

有人可以给我任何资源,我可以从哪里开始?博客,网站,书籍,分步指南.

Joã*_*elo 3

您是对的,目前严重依赖 HTTP 的系统中最全面的身份验证和授权解决方案基于 OAuth 2.0 和 OpenID Connect。这当然包括 SPA 调用 Web API 后端的特定场景。要进一步阅读此一般案例,您可以查看Auth0 SPA + API 架构场景或查看专注于您所选技术的快速入门:

注意:Auth0 支持 OAuth 2.0/OpenID Connect,因此即使文档可能具有特定于提供商的其他功能,如果您确实决定采用 OAuth 2.0/OpenID Connect 路线,您可能会发现它们很有用。这是依赖标准的优势之一,在实现/提供商之间切换更容易。

但是,您还应该考虑是否确实需要完整的 OAuth 2.0/OpenID Connect,因为它们的目标是解决许多不同的用例,因此也带来了显着的复杂性。如果您走这条路,建议您利用现有的库(例如 IdentityServer)或云提供商(例如 Auth0),因为自己实施会带来很大的风险并且需要付出巨大的努力。

为了满足从您自己的 Angular2 前端提供集成登录的要求,您可能可以查看 OAuth2 指定的资源所有者密码凭据授予。

另一种选择是做你自己的定制解决方案,这通常是不受欢迎的,因为它很容易出错,但理论上是:

  1. 处理用户身份验证和注册(可能使用 ASP .NET Identity)
  2. 登录后,与一些令牌交换用户凭据,您稍后可以使用该令牌调用 API

令牌可以只是一个随机(不可猜测)值,用作对某些服务器端存储的引用,其中包含有关关联用户的信息。