The Big Picture

大多数现代应用看起来都像下面的样子:

大多数的交互是下面这样:

  • 浏览器与web应用之间的通信
  • web应用和web APIs之间的通信(这两者有时是独立的,有时是有用户参与的(openid connect))
  • 基于浏览器的应用和web APIs之间的通信
  • 原生应用(手机客户端等)与web APIs之间的通信
  • 基于服务端的应用和web APIs之间的通信
  • web APIs和web APIs之间的通信(这两者有时是独立的,有时是有用户参与的(openid connect))

通常每一层(前端的,中间层,后端的)都必须保护资源并实现认证和/或授权。而且都是针对同一个用户的存储来说。(实际上就是单点登录)

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

重组应用以支持安全令牌服务会引入以下架构和协议:

注意这张图解释了上面大部分提到的术语,web应用,web APIs,等等。如果对上面属于有疑问的可以看这张图。

这样的设计将安全问题分为两个部分:

认证

当一个应用需要知道当前用户的身份时,认证这个东西就派上用场了。通常这些应用代表用户管理数据并且需要确保只处理当前用户被允许的数据。(使用这个)最普遍的例子是web应用,但是原生app和基于js的应用(angular、vue等这些大前端)同样需要认证。

最常见的认证协议包括SAMS2p,WS-Federation和OpenID Connect,SAMS2p是目前最流行的,并且应用最广泛的。

OpenID Connect是这里面提到的最新的,并且也被各大厂商认为是代表了未来的协议,因为它赋予了现代的应用最大的潜能。他从开始就考虑了移动应用的场景,并且对于API来说也是友好的。

访问API

应用有两个基本的途径来访问APIs--将应用本身作为身份标识(没有用户参与)。或者通过用户的身份标识(有用户参与)。有时这两个途径需要结合使用。

OAuth2是一个允许应用从安全令牌服务中请求access token的协议。然后,应用使用这个access token来和APIs交互。它(指安全令牌服务)减少了客户端应用程序和apis之间通信的复杂性,因为身份验证和授权可以集中处理。

OpenID Connect和OAuth2.0--更好的集成

OPenID Connec和OAuth2.0很像,实际上前者是后者的一个顶层的扩展。认证和访问API这两个基本的安全关注点被集中到了一个协议中,经常在安全令牌服务中进行一次往返。

我们相信在可预知的未来OpenID Connect和OAuth2.0的结合是保护现代应用最好的方案。IdentityServer4是对这两个协议的一个实现,并且经过高度的优化,以解决当今的移动应用、原生和web应用中的安全问题。

IdentityServer4可以做些什么

IdentityServer是一个中间件,它将兼容OpenID Connect和OAuth2.0的端点添加到任意的一个Asp.net core上面去。

通常情况下,你会创建(或者重用)一个包含登陆、登出页面(或许还有确认consen页面,这依赖于你的需求)的应用,并且IdentityServer中间件将一些必要的协议头添加到这个应用的上面,所以客户端应用可以使用这些标准的协议来与之交互。

宿主应用可以如你所愿很复杂,但是我们通常会推荐你的宿主应用应该只包含认证相关的UI来使你的受攻击面尽可能的减小。

IdentityServer4【Introduction】之概括的更多相关文章

  1. 读论文系列:Object Detection ECCV2016 SSD

    转载请注明作者:梦里茶 Single Shot MultiBox Detector Introduction 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层featur ...

  2. IdentityServer4【Introduction】之包和项目构建

    包和项目构建 IdentityServer包含了以下的nuget包: IdentityServer4 nuget | github 这个包包含了IdentityServer核心的组成部分,有对象模型, ...

  3. IdentityServer4【Introduction】之支持的规范

    支持的规范 identityserver实现了下面的规范 OpenID Connect OpenID Connect Core 1.0 (spec) OpenID Connect Discovery ...

  4. IdentityServer4【Introduction】之术语

    术语 在规范.文档和对象模型中使用了一些你应该了解的术语. IdentityServer IdentityServer是一个OpenID Connect的提供者,它实现了OpenID Connect和 ...

  5. IdentityServer4 实现 OpenID Connect 和 OAuth 2.0

    关于 OAuth 2.0 的相关内容,点击查看:ASP.NET WebApi OWIN 实现 OAuth 2.0 OpenID 是一个去中心化的网上身份认证系统.对于支持 OpenID 的网站,用户不 ...

  6. (原创)Stanford Machine Learning (by Andrew NG) --- (week 1) Introduction

    最近学习了coursera上面Andrew NG的Machine learning课程,课程地址为:https://www.coursera.org/course/ml 在Introduction部分 ...

  7. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十一章:模板测试

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十一章:模板测试 代码工程地址: https://github.co ...

  8. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第八章:光照

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第八章:光照 代码工程地址: https://github.com/j ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第五章:渲染流水线

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第五章:渲染流水线 学习目标 了解几个用以表达真实场景的标志和2D图像 ...

随机推荐

  1. Vmware12安装centos系统详解

    vmware12安装centos7系统详解 用虚拟机12安装centos7系统详细安装过程,后附centos7下载地址. 工具/原料 虚拟机12 centos7系统镜像 方法/步骤 1 1.百度搜索c ...

  2. 对于coursera上三门北大网课的评测

    今年暑假开始就选了coursera上三门北大的网课——C++程序设计.算法基础.数据结构基础,它们属于一个项目的,上的话每个月249块钱,项目里包括这三门一共有七门课.因为一开始是三门课同时上的,数据 ...

  3. Quartz简答介绍

    引言 Quartz是开源任务调度框架中的翘楚,提供了强大的任务调度机制.Quartz允许开发人员灵活地定义触发器的调度时间表,并可对触发器和任务进行关联映射.此外,Quartz提供了调度运行环境的持久 ...

  4. Linux之文档与目录结构

    Linux文件系统结构 Linux目录结构的组织形式和Windows有很大的不同.首先Linux没有“盘(C盘.D盘.E盘)”的概念.已经建立文件系统的硬盘分区被挂载到某一个目录下,用户通过操作目录来 ...

  5. 单页应用 - Token 验证

    单页应用 - Token 验证 转:https://juejin.im/post/58da720b570c350058ecd40f 第一次接触单页应用,记录公司项目关于Token验证知识. Token ...

  6. docker: read tcp 192.168.7.235:36512->54.230.212.9:443: read: connection reset by peer.

    在学习rancher的时候去下载rancher/agent镜像的时候,出现报错:docker: read tcp 192.168.7.235:36512->54.230.212.9:443: r ...

  7. oracle 多版本

    并发控制 concurrency control 数据库提供的函数集合,允许多个人同时访问和修改数据. 锁(lock)是Oracle管理共享数据库资源并发访问并防止并发数据库事务之间“相互干涉”的核心 ...

  8. 解决y7000笔记本ubuntu18.04下 休眠挂起后唤醒花屏

    定位问题,切换到核显后发现一点问题也没有,基本确定是显卡驱动的问题 但是由于配置环境比较复杂,不想重新装N卡驱动,所以另寻方法 sudo gedit /etc/default/grub 修改前 # I ...

  9. Python:Day18 os模块、logging模块、正则表达式

    迭代器 满足迭代器协议: 1.内部有next方法 2.内部有iter()方法 os模块 import os print(os.getcwd()) #C:\Users\Lowry\PycharmProj ...

  10. Echo团队Alpha冲刺随笔 - 第五天

    项目冲刺情况 进展 前端:布局,内容等方面基本完成. 后端:基本功能基本实现. 计划:准备进行前后端对接,进行测试 问题 有部分代码冗余,需要着手修改 心得 团队分工明确,互相协作,开发进度比预想的要 ...