IdentityServer4是ASP.NET Core 2的OpenID Connect和OAuth 2.0框架。它能够在您的应用程序中提供如下功能:前端
它使你的应用程序具备以下特色:web
适用于全部应用程序(web, native, mobile, services)的集中登陆逻辑和工做流程。IdentityServer是OpenID Connect的官方认证明现。后端
多个类型的应用程序在一个点进行登陆和注销操做。浏览器
为各类类型的客户端颁发API的访问令牌,例如 服务器到服务器、Web应用程序,SPA、本地应用和移动应用程序。安全
支持Azure Active Directory,Google,Facebook等外部身份提供商。这能够保护您的应用程序免受如何链接到这些外部提供商的详细信息的影响。服务器
最重要的部分 - IdentityServer的许多方面均可以根据您的需求进行定制。因为IdentityServer是一个框架而不是现成的产品或SaaS,所以您能够编写代码以使系统适应您的方案。框架
IdentityServer使用的Apache 2开源协议,容许在其上构建商业产品。它也是.NET Foundation的一部分,它提供治理和法律支持。优化
若是您须要帮助构建或运行您的身份平台,请告知IdentityServer官方。 他们能够经过多种方式为您提供帮助。spa
现代应用程序看起来更像这个:设计
最多见的相互做用:
一般,每一个层(前端、中间层和后端)必须保护资源并实现身份验证或受权——一般针对同一个用户存储区。
将这些基本安全功能外包给安全令牌服务能够防止在这些应用程序和端点上复制该功能。
应用支持安全令牌服务将引发下面的体系结构和协议:
这样的设计将安全问题分为两部分:
认证可让一个应用程序知道当前用户的身份。 一般,这些应用程序表明该用户管理数据,而且须要确保该用户只能访问容许他访问的数据。最多见的示例是Web应用程序,但基于本地和基于js的应用程序也须要进行身份验证。
最经常使用的认证协议saml2p、WS-Federation和OpenID,saml2p协议是最流行和实际应用最多的。
OpenID Connect对于如今应用来讲是被认为是将来最有潜力的,这是专为移动应用场景设计的,一开始就被设计成对移动应用场景友好。
应用程序有两种基本方式与API进行通讯,一种是使用应用程序标识,另外一种是委托用户的身份。有时这两种方法都须要结合。
OAuth2协议,它容许应用程序从一个安全令牌服务要求访问令牌,使用这个访问令牌来访问API。这个机制下降了客户机应用程序和API的复杂性,由于身份验证和受权能够是集中式的。
OpenID Connect 和 OAuth 2.0很是类似,事实上OpenID Connect 是在OAuth 2.0之上的一个扩展。两个基本的安全问题,认证和API访问,被组合成单个协议,一般只需一次往返安全令牌服务。
咱们认为OpenID Connect和OAuth 2.0的组合是可预见在将来是保护现代应用程序的最佳方法。IdentityServer4是这两种协议的实现,而且被高度优化以解决当今移动应用、本地应用和web应用的典型安全问题
IdentityServer是将规范兼容的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET Core应用程序的中间件。一般,您构建(或从新使用)包含登陆和注销页面的应用程序,IdentityServer中间件会向其添加必要的协议头,以便客户端应用程序能够与其对话 使用这些标准协议。
咱们一般建议经过仅包含认证相关的UI来使攻击面尽量小。