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

ASP.NET Core Web API + Angular 2 Authorization and Authentication

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

  1. 我可以使用 ASP.NET 身份在 Angular 2 上创建一个 Login/Register 页面吗?
  2. 如何操作仅与登录用户相关的数据? (基于令牌的身份验证?它是如何工作的?在哪里可以阅读它?)
  3. 如何在实际 Angular 2 应用程序上实施 login/register 进程而不将我重定向到 Identity Server?

看了IdentityServer4、OAuth2和OpenID的例子,有点复杂,看不懂。我经历了快速入门中的每一步,它有效,但我不明白它是如何工作的以及它做了什么。

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

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

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

之间切换

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

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

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

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

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