大图

大多数现代应用程序或多或少看起来像这样:

../_images/appArch.png

最常见的互动是:

通常,每个层(前端,中间层和后端)都必须保护资源并实现身份验证和/或授权 - 通常针对同一个用户存储。

将这些基本安全功能外包给安全令牌服务可防止在这些应用程序和端点之间复制该功能。

重构应用程序以支持安全令牌服务会产生以下体系结构和协议:

../_images/protocols.png

这种设计将安全问题分为两部分:

认证

当应用程序需要知道当前用户的身份时,需要进行身份验证。通常,这些应用程序代表该用户管理数据,并且需要确保该用户只能访问允许的数据。最常见的例子是(经典)Web应用程序 - 但是基于本机和JS的应用程序也需要身份验证。

最常见的身份验证协议是SAML2p,WS-Federation和OpenID Connect - SAML2p是最受欢迎和最广泛部署的。

OpenID Connect是三者中的最新产品,但被认为是未来,因为它具有最大的现代应用潜力。它是从一开始就为移动应用场景而构建的,旨在实现API友好。

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中间件为其添加必要的协议头,以便客户端应用程序可以与之通信使用那些标准协议。

../_images/middleware.png

托管应用程序可以像您想要的那样复杂,但我们通常建议通过仅包含与身份验证相关的UI来使攻击面尽可能小。

nidie.com.cn - 用心与你沟通