【问题标题】:ASP.NET Core Web API + Angular 2 Authorization and AuthenticationASP.NET Core Web API + Angular 2 授权和身份验证
【发布时间】:2017-01-23 08:09:11
【问题描述】:
我有 Angular 2 应用程序,它与 Web API 对话并执行一些基本的 CRUD 操作。我有几个问题:
- 有什么方法可以使用 ASP.NET Identity 在 Angular 2 上创建登录/注册页面?
- 如何处理仅与登录用户相关的数据? (基于令牌的身份验证?它是如何工作的?在哪里阅读它?)
- 如何在实际 Angular 2 应用程序上实现登录/注册过程而不将我重定向到 Identity Server?
我查看了 IdentityServer4、OAuth2 和 OpenID 示例,这有点太复杂了,难以理解。我完成了快速入门中的每一步,它有效,但我不明白它是如何以及做什么的。
有人可以给我任何我可以从哪里开始的资源吗?博客、网站、书籍、分步指南。
【问题讨论】:
标签:
authentication
angular
oauth-2.0
asp.net-core-1.0
asp.net-core-webapi
【解决方案1】:
您说得对,目前在严重依赖 HTTP 的系统中,最全面的身份验证和授权解决方案是基于 OAuth 2.0 和 OpenID Connect。这当然包括您的 SPA 调用 Web API 后端的特定场景。如需进一步了解此通用案例,您可以查看Auth0 SPA + API Architecture Scenario 或查看针对您所选技术的快速入门:
注意:Auth0 支持 OAuth 2.0/OpenID Connect,因此即使文档可能具有特定于提供商的附加功能,如果您确实决定使用 OAuth 2.0/,您可能会发现它们很有用OpenID 连接路由。这是依赖标准的优势之一,更容易在实现/提供者之间切换。
但是,您还应该考虑是否真的需要使用完整的 OAuth 2.0/OpenID Connect,因为它们旨在解决许多不同的用例,因此也会带来很大的复杂性。如果您走这条路,建议您利用现有的库(如 IdentityServer)或云提供商(如 Auth0),因为自己实施会带来很多风险并且需要付出巨大的努力。
为了满足您在自己的 Angular2 前端中提供集成登录的要求,您可能可以查看 OAuth2 指定的资源所有者密码凭据授权。
另一种选择是做你自己的自定义解决方案,这通常是不受欢迎的,因为它很容易出错,但理论上是:
- 处理用户身份验证和注册(可能使用 ASP .NET Identity)
- 登录后将用户凭据与一些令牌交换,您以后可以使用该令牌调用 API
令牌可能只是一个随机(不可猜测)值,用作对包含相关用户信息的某些服务器端存储的引用。