大多数现代应用程序或多或少看起来像这样:
![第1章 背景 - Identity Server 4 中文文档(v1.0.0) 第1章 背景 - Identity Server 4 中文文档(v1.0.0)](https://image.shishitao.com:8440/aHR0cDovL2Jic21heC5pa2FmYW4uY29tL3N0YXRpYy9MM0J5YjNoNUwyaDBkSEJ6TDJsa1pXNTBhWFI1YzJWeWRtVnlOQzV5WldGa2RHaGxaRzlqY3k1cGJ5OWxiaTlzWVhSbGMzUXZYMmx0WVdkbGN5OWhjSEJCY21Ob0xuQnVadz09LmpwZw%3D%3D.jpg?w=700&webp=1)
最常见的互动是:
- 浏览器与Web应用程序通信
- Web应用程序与Web API进行通信(Web应用程序自身 或 代表用户 与 Web API 通信)
- 基于浏览器的应用程序与Web API通信
- 本地应用程序与Web API通信
- 基于服务器的应用程序与Web API通信
- Web API与Web API进行通信(WebAPI自身 或 代表用户与另一个WebAPI 通信)
通常,每个层(前端,中间层和后端)都必须保护资源并实现身份验证和授权 - 通常针对同一个用户存储。
将这些基本安全功能外包给安全令牌服务可防止在这些应用程序和端点之间复制该功能。
重构应用程序以支持安全令牌服务会产生以下体系结构和协议:
![第1章 背景 - Identity Server 4 中文文档(v1.0.0) 第1章 背景 - Identity Server 4 中文文档(v1.0.0)](https://image.shishitao.com:8440/aHR0cDovL2Jic21heC5pa2FmYW4uY29tL3N0YXRpYy9MM0J5YjNoNUwyaDBkSEJ6TDJsa1pXNTBhWFI1YzJWeWRtVnlOQzV5WldGa2RHaGxaRzlqY3k1cGJ5OWxiaTlzWVhSbGMzUXZYMmx0WVdkbGN5OXdjbTkwYjJOdmJITXVjRzVuLmpwZw%3D%3D.jpg?w=700&webp=1)
这种设计将安全问题分为两部分:
1.1 认证
当应用程序需要知道当前用户的身份时,需要进行身份验证。通常,这些应用程序代表该用户管理数据,并且需要确保该用户只能访问允许的数据。最常见的示例是(经典)Web应用程序 - 但是基于本地和JS的应用程序也需要身份验证。
最常见的身份验证协议是SAML2p,WS-Federation和OpenID Connect - SAML2p是最受欢迎和最广泛部署的。
OpenID Connect是三者中的最新产品,但被认为是未来,因为它具有最大的现代应用潜力。它从一开始就为移动应用场景而构建,旨在实现API友好。
1.2 API访问
应用程序有两种基本方式与API通信 - 使用应用程序标识或委派用户身份。有时两种方法都需要结合起来。
OAuth2是一种协议,允许应用程序从安全令牌服务请求访问令牌,并使用它们与API通信。此委派降低了客户端应用程序和API的复杂性,因为身份验证和授权可以集中。
1.3 OpenID Connect和OAuth 2.0 - 更好地结合在一起
OpenID Connect和OAuth 2.0非常相似 - 事实上,OpenID Connect是OAuth 2.0之上的扩展。两个基本的安全问题,即身份验证和API访问,被合并为一个协议 - 通常只需一次往返安全令牌服务。
我们相信OpenID Connect和OAuth 2.0的结合是在可预见的未来保护现代应用程序的最佳方法。IdentityServer4是这两种协议的实现,经过高度优化,可以解决当今移动,本地和Web应用程序的典型安全问题。
1.4 IdentityServer4如何提供帮助
IdentityServer是一个中间件,可将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET Core应用程序中。
通常,您构建(或复用)包含登录和注销页面的应用程序(或者 授权确认页),并且IdentityServer 中间件会将需要的协议添加到页面头部,这样一来客户端应用程序就能够使用这些标准协议跟它协商了。
![第1章 背景 - Identity Server 4 中文文档(v1.0.0) 第1章 背景 - Identity Server 4 中文文档(v1.0.0)](https://image.shishitao.com:8440/aHR0cDovL2Jic21heC5pa2FmYW4uY29tL3N0YXRpYy9MM0J5YjNoNUwyaDBkSEJ6TDJsa1pXNTBhWFI1YzJWeWRtVnlOQzV5WldGa2RHaGxaRzlqY3k1cGJ5OWxiaTlzWVhSbGMzUXZYMmx0WVdkbGN5OXRhV1JrYkdWM1lYSmxMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)
你可以根据你的需要使用尽可能复杂的宿主应用程序。但是,为了保持受攻击面尽可能小, 我们一般建议你只将认证相关的UI包含进来。
第1章 背景 - Identity Server 4 中文文档(v1.0.0)的更多相关文章
-
第18章 启动 - Identity Server 4 中文文档(v1.0.0)
IdentityServer是中间件和服务的组合.所有配置都在您的启动类中完成. 18.1 配置服务 您可以通过调用以下方法将IdentityServer服务添加到DI系统: public void ...
-
第66章 视频 - Identity Server 4 中文文档(v1.0.0)
第66章 视频 66.1 2019 January [NDC] - 使用ASP.NET Core 2.2和3.0保护Web应用程序和API 1月[NDC] - 为基于OpenID Connect / ...
-
第41章 CORS - Identity Server 4 中文文档(v1.0.0)
第41章 CORS IdentityServer中的许多端点将通过基于JavaScript的客户端的Ajax调用进行访问.鉴于IdentityServer最有可能托管在与这些客户端不同的源上,这意味着 ...
-
第21章 登录 - Identity Server 4 中文文档(v1.0.0)
为了使IdentityServer能够代表用户发出令牌,该用户必须登录IdentityServer. 21.1 Cookie身份验证 使用由ASP.NET Core中的cookie身份验证处理程序管理 ...
-
第2章 术语 - Identity Server 4 中文文档(v1.0.0)
规范.文档和对象模型等都使用特定的术语来表述. 2.1 IdentityServer IdentityServer是OpenID Connect提供程序 - 它实现OpenID Connect和OAu ...
-
第64章 学习 - Identity Server 4 中文文档(v1.0.0)
以下是一些在线,远程和课堂培训选项,以了解有关ASP.NET Core Identity和IdentityServer4的更多信息. 64.1 现代应用程序的身份和访问控制(使用ASP.NET Cor ...
-
第56章 Client - Identity Server 4 中文文档(v1.0.0)
该Client模型的OpenID Connect或OAuth 2.0 客户端-例如,本地应用,Web应用程序或基于JS的应用程序. 56.1 Basics Enabled 指定是否启用客户端.默认为t ...
-
第57章 GrantValidationResult - Identity Server 4 中文文档(v1.0.0)
该GrantValidationResult类模型补助确认为扩展授权和资源所有者密码授权的结果. 最常见的用法是使用身份验证(成功用例): context.Result = new GrantVali ...
-
第45章 工具 - Identity Server 4 中文文档(v1.0.0)
该IdentityServerTools是为IdentityServer编写扩展代码时,你可能需要有效的内部工具的集合.要使用它,请将其注入代码,例如控制器: public MyController( ...
随机推荐
-
jQuery 3.0 的 setter/getter 模式
jQuery 的 setter/getter 共用一个函数,通过是否传参来表明它是何种意义.简单说传参它是 setter,不传它是 getter. 一个函数具有多种意义在编程语言中并不罕见,比如函数重 ...
-
IOS系列swift语言之课时七
这下需要掌握的就是类型转换,类的构造器,判断类型,异常,异常的处理,defer,范型,约束加速刷代码 import Foundation /* 类型转换 1.利用类的构造器进行转换 2.系统可能提供一 ...
-
自动adsl拨号上网
@echo offmode con cols=35 lines=6 & color 5Btitle 开机连接宽带--设置工具 QQ1009693258echo 请稍候...VER|FIND & ...
-
shell脚本基础知识
虽然现在能在Linux系统下生存,但是自觉效率太低,和高手有很大的差距. 这就是关于Linux的知识太过匮乏,有很多事情知道该怎么做,但是就是没法在Linux下实现,为了提升工作效率,必须要接触Lin ...
-
java中的类实现comparable接口 用于排序
import java.util.Arrays; public class SortApp { public static void main(String[] args) { Student[] s ...
-
iOS8:把这些七招APP哭
6月3日.苹果发布了新一代的高配置手机操作系统iOS 8,我们看到了很多新的功能和引人注目的新变化.它为开发人员提供了许多其他更酷能力发展.第三方输入法也开放,这使得国内的百度.搜狗输入法是不过高兴的 ...
-
Android LCD(三):Samsung LCD接口篇
关键词:android LCD控制器 Framebuffer PWM 平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0 平台:samsung exy ...
-
JAVA基础-JDBC(一)
一.JDBC的简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,由与各种数据库都有着一套自己的规范,JAVA对其操 ...
-
javacript 组合使用构造函数模式和原型模式
构造函数模式创建对象 基本方法 function Person(name,age){ this.name=name; this.age=age; this.sayName=function(){ al ...
-
芝麻HTTP:设置Selenium+Chrome代理
微博登录限制了错误次数···加上Cookie大批账号被封需要从Cookie池中 剔除被封的账号··· 需要使用代理··· 无赖百度了大半天都是特么的啥玩意儿???结果换成了 Google手到擒来 分分 ...