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. MVC+EF 序列化类型为“System.Data.Entity.DynamicProxies.__的对象时检测到循环引用

    用MVC+EF做简单查询时,返回json格式数据出现问题 原代码: public ActionResult JSon({ NorthwindEntities db = new NorthwindEnt ...

  2. Ecelipse上添加Server

    第一步,打开eclipse工具,点击菜单栏中的"Help",选择"Install New Software" 第二步,点击Add按钮 第三步,Name输入:&q ...

  3. 【ZJOI2012】灾难

    [ZJOI2012]灾难 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. 学 ...

  4. Scrapy 框架 总结

    总结: 1.中间件:下载中间件(拦截请求和响应) - process_request: - prceess_response: - process_exception: - 请求: - UA伪装: - ...

  5. 创建线程时如果既传入了runnable对象,又继承thread重写了run方法,会执行的哪里的代码

    1 使用线程的方式,继承thread类,重写run方法 new Thread() { @Override public void run() { System.out.println("我是 ...

  6. redis的过期时间和过期删除机制

    一:设置过期时间 redis有四种命令可以用于设置键的生存时间和过期时间: EXPIRE <KEY> <TTL> : 将键的生存时间设为 ttl 秒 PEXPIRE <K ...

  7. 需要熟练的Python知识点

    数据与列表元祖字符串 repr(x) 将对象x转换为表达式字符串 eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象 unichr(x) 将一个整数转换为Unicode字符 ...

  8. zabbix使用percona的mysql监控模板监控

    安装第三方插件仓库源: [root@iZ9j3yrx43sb5sZ ~]# yum install https://www.percona.com/redir/downloads/percona-re ...

  9. C# GDI+双缓冲技术

    我想有很多搞图形方面的朋友都会用到双缓冲技术的时候,而且有的时候她的确是个头疼的问题.最近我也要用双缓冲技术,程序怎么调试都不合适,当要对图形进行移动时,总是会出现闪烁抖动.在网上找了些资料,说得都不 ...

  10. C++ —— 返回数组指针的函数 和 返回指向函数的指针的函数

    返回数组指针的函数 基础知识:数组不能被拷贝,函数不能返回数组,只能返回数组的指针或者引用. 定义一个 返回数组指针的函数 的方法,以 一个接收参数为 含有10个整型元素的数组的引用  和 返回一个含 ...