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

最常见的互动是:

  • 浏览器与Web应用程序通信
  • Web应用程序与Web API进行通信(Web应用程序自身 或 代表用户 与 Web API 通信)
  • 基于浏览器的应用程序与Web API通信
  • 本地应用程序与Web API通信
  • 基于服务器的应用程序与Web API通信
  • Web API与Web API进行通信(WebAPI自身 或 代表用户与另一个WebAPI 通信)

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

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

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

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

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 中间件会将需要的协议添加到页面头部,这样一来客户端应用程序就能够使用这些标准协议跟它协商了。

你可以根据你的需要使用尽可能复杂的宿主应用程序。但是,为了保持受攻击面尽可能小, 我们一般建议你只将认证相关的UI包含进来。

github地址

第1章 背景 - Identity Server 4 中文文档(v1.0.0)的更多相关文章

  1. 第18章 启动 - Identity Server 4 中文文档(v1.0.0)

    IdentityServer是中间件和服务的组合.所有配置都在您的启动类中完成. 18.1 配置服务 您可以通过调用以下方法将IdentityServer服务添加到DI系统: public void ...

  2. 第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 / ...

  3. 第41章 CORS - Identity Server 4 中文文档(v1.0.0)

    第41章 CORS IdentityServer中的许多端点将通过基于JavaScript的客户端的Ajax调用进行访问.鉴于IdentityServer最有可能托管在与这些客户端不同的源上,这意味着 ...

  4. 第21章 登录 - Identity Server 4 中文文档(v1.0.0)

    为了使IdentityServer能够代表用户发出令牌,该用户必须登录IdentityServer. 21.1 Cookie身份验证 使用由ASP.NET Core中的cookie身份验证处理程序管理 ...

  5. 第2章 术语 - Identity Server 4 中文文档(v1.0.0)

    规范.文档和对象模型等都使用特定的术语来表述. 2.1 IdentityServer IdentityServer是OpenID Connect提供程序 - 它实现OpenID Connect和OAu ...

  6. 第64章 学习 - Identity Server 4 中文文档(v1.0.0)

    以下是一些在线,远程和课堂培训选项,以了解有关ASP.NET Core Identity和IdentityServer4的更多信息. 64.1 现代应用程序的身份和访问控制(使用ASP.NET Cor ...

  7. 第56章 Client - Identity Server 4 中文文档(v1.0.0)

    该Client模型的OpenID Connect或OAuth 2.0 客户端-例如,本地应用,Web应用程序或基于JS的应用程序. 56.1 Basics Enabled 指定是否启用客户端.默认为t ...

  8. 第57章 GrantValidationResult - Identity Server 4 中文文档(v1.0.0)

    该GrantValidationResult类模型补助确认为扩展授权和资源所有者密码授权的结果. 最常见的用法是使用身份验证(成功用例): context.Result = new GrantVali ...

  9. 第45章 工具 - Identity Server 4 中文文档(v1.0.0)

    该IdentityServerTools是为IdentityServer编写扩展代码时,你可能需要有效的内部工具的集合.要使用它,请将其注入代码,例如控制器: public MyController( ...

随机推荐

  1. BurpSuite 代理设置的小技巧

    原文:https://www.anquanke.com/post/id/85925 作者:三思之旅 预估稿费:300RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 在We ...

  2. 浏览器css隐藏滚动条的方法!除了IE一般都支持

    ::-webkit-scrollbar { /* 滚动条整体部分 */ width:0px; margin-right:2px}::-webkit-scrollbar-track-piece { /* ...

  3. Python练手例子(14)

    79.字符串排序. #python3.7 if __name__ == '__main__': str1 = input('Input string:\n') str2 = input('Input ...

  4. WebAssembly让你的Javascript计算性能提升70%

    现在的JavaScript代码要进行性能优化,通常使用一些常规手段,如:延迟执行.预处理.setTimeout等异步方式避免处理主线程,高大上一点的会使用WebWorker.即使对于WebWorker ...

  5. [Swift]LeetCode203. 移除链表元素 | Remove Linked List Elements

    Remove all elements from a linked list of integers that have value val. Example: Input: 1->2-> ...

  6. MySQL查询昨天的数据

    SELECT * FROM `表名` WHERE TO_DAYS(`时间字段名`) = TO_DAYS(NOW()) - 1; 需要前几天的话就在后面减几天.

  7. docker for mac 创建私有仓库

    拉取镜像 docker pull registry 运行registry run -d -p : -v /Users/huangenai/docker/registry:/var/lib/regist ...

  8. redis 系列27 Cluster高可用 (2)

    一. ASK错误 集群上篇最后讲到,对于重新分片由redis-trib负责执行,关于该工具以后再介绍.在进行重新分片期间,源节点向目标节点迁移一个槽的过程中,可以会出现该槽中的一部分键值对保存在源节点 ...

  9. Kestrel.Transport.Sockets分析与使用

    相信大家都清楚asp core有着非常出色的性能,它出色的性能也源于网络服务模块Kestrel:在techempower测试中Kestrel基础核心达到了700万级别的RPS吞吐能力,具备这样的能力那 ...

  10. 带着新人学springboot的应用06(springboot+RabbitMQ 中)

    上一节说了这么多废话,看也看烦了,现在我们就来用鼠标点点点,来简单玩一下这个RabbitMQ. 注意:这一节还是不用敲什么代码,因为上一节我们设置了那个可视化工具,我们先用用可视化工具熟悉一下流程. ...