仙风制药,鼓浪屿地图,巴比虫
大多数现代应用程序或多或少看起来像这样:
最常见的互动是:
通常,每个层(前端,中间层和后端)都必须保护资源并实现身份验证和授权 - 通常针对同一个用户存储。
将这些基本安全功能外包给安全令牌服务可防止在这些应用程序和端点之间复制该功能。
重构应用程序以支持安全令牌服务会产生以下体系结构和协议:
这种设计将安全问题分为两部分:
当应用程序需要知道当前用户的身份时,需要进行身份验证。通常,这些应用程序代表该用户管理数据,并且需要确保该用户只能访问允许的数据。最常见的示例是(经典)web应用程序 - 但是基于本地和js的应用程序也需要身份验证。
最常见的身份验证协议是saml2p,ws-federation和openid connect - saml2p是最受欢迎和最广泛部署的。
openid connect是三者中的最新产品,但被认为是未来,因为它具有最大的现代应用潜力。它从一开始就为移动应用场景而构建,旨在实现api友好。
应用程序有两种基本方式与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包含进来。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Net Core Web Api项目与在NginX下发布的方法
asp.net core3.1 引用的元包dll版本兼容性问题解决方案
IdentityServer4实现.Net Core API接口权限认证(快速入门)
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现
网友评论