ASP.NET Core身份认证服务框架IdentityServer4 介绍
identityserver4是asp.net core 2的openid connect和oauth 2.0框架。它可以在您的应用程序中提供以下功能:
它使你的应用程序具有如下特点:
认证即服务
适用于所有应用程序(web, native, mobile, services)的集中登录逻辑和工作流程。identityserver是openid connect的官方认证实现。
单点登录/注销
多个类型的应用程序在一个点进行登录和注销操作。
api 访问控制
为各种类型的客户端颁发api的访问令牌,例如 服务器到服务器、web应用程序,spa、本地应用和移动应用程序。
支持azure active directory,google,facebook等外部身份提供商。这可以保护您的应用程序免受如何连接到这些外部提供商的详细信息的影响。
专注于定制
最重要的部分 - identityserver的许多方面都可以根据您的需求进行定制。由于identityserver是一个框架而不是现成的产品或saas,因此您可以编写代码以使系统适应您的方案。
成熟的开源
identityserver使用的apache 2开源协议,允许在其上构建商业产品。它也是.net foundation的一部分,它提供治理和法律支持。
免费和商业支持
如果您需要帮助构建或运行您的身份平台,请告知identityserver官方。 他们可以通过多种方式为您提供帮助。
一.整体介绍
现代应用程序看起来更像这个:
最常见的相互作用:
- 浏览器与web应用程序的通信 browser -> web app
- web应用程序与web api通信
- 基于浏览器的应用程序与web api
- 本机应用程序与web api进行沟通
- 基于服务器的应用程序与web api
- web api与web api通信
通常,每个层(前端、中间层和后端)必须保护资源并实现身份验证或授权——通常针对同一个用户存储区。
将这些基本安全功能外包给安全令牌服务可以防止在这些应用程序和端点上复制该功能。
应用支持安全令牌服务将引起下面的体系结构和协议:
这样的设计将安全问题分为两部分:
二.认证(authentication)
认证可以让一个应用程序知道当前用户的身份。 通常,这些应用程序代表该用户管理数据,并且需要确保该用户只能访问允许他访问的数据。最常见的示例是web应用程序,但基于本地和基于js的应用程序也需要进行身份验证。
最常用的认证协议saml2p、ws-federation和openid,saml2p协议是最流行和实际应用最多的。
openid connect对于现在应用来说是被认为是未来最有潜力的,这是专为移动应用场景设计的,一开始就被设计成对移动应用场景友好。
三.api访问
应用程序有两种基本方式与api进行通信,一种是使用应用程序标识,另一种是委托用户的身份。有时这两种方法都需要结合。
oauth2协议,它允许应用程序从一个安全令牌服务要求访问令牌,使用这个访问令牌来访问api。这个机制降低了客户机应用程序和api的复杂性,因为身份验证和授权可以是集中式的。
四.openid connect 和 oauth 2.0 结合
openid connect 和 oauth 2.0非常相似,事实上openid connect 是在oauth 2.0之上的一个扩展。两个基本的安全问题,认证和api访问,被组合成单个协议,通常只需一次往返安全令牌服务。
我们认为openid connect和oauth 2.0的组合是可预见在未来是保护现代应用程序的最佳方法。identityserver4是这两种协议的实现,并且被高度优化以解决当今移动应用、本地应用和web应用的典型安全问题
五.identityserver4可以帮助你做什么
identityserver是将规范兼容的openid connect和oauth 2.0端点添加到任意asp.net core应用程序的中间件。通常,您构建(或重新使用)包含登录和注销页面的应用程序,identityserver中间件会向其添加必要的协议头,以便客户端应用程序可以与其对话 使用这些标准协议。
我们通常建议通过仅包含认证相关的ui来使攻击面尽可能小。