角色:

  1. RO (resource owner): 资源所有者,对资源具有授权能力的人,通常比喻为用户
  2. RS (resource server): 资源服务器,存储资源、并处理对资源的访问请求
  3. Client:第三方应用,它通过RO确认后,获得RO的授权后便可以去访问RS上的RO对应资源
  4. AS (authorization server): 授权服务器,它认证RO的身份,为RO提供授权审批流程并最终颁发授权令牌(Access Token)。

PS:通常和RS放到一起

授权模式:

前言:在一般的授权流程中,Client第三方应用可能是一个web程序,也有可能是一段命令行代码。或者其他一些脚本,为了保护其安全性。关于用户的一些秘钥,可以选择不给用户(RO)暴露。但对于第三方应用,还是可以访问到用户的数据。

支持这些不同类型的Client,区分除了多种授权模式。

  1. 授权码 (Authorization Code Grant)
  2. 隐式授权 (Implicit Grant)
  3. RO凭证授权 (Resource Owner Password Credentials Grant)
  4. Client凭证授权 (Client Credentials Grant)

授权码模式 (Authorization Code Grant):

典型的web流程:

  1. 第三方应用程序(Client),将用户(RO)当前页面重定向到授权服务器(AS),在用户确认授权或取消授权后,重定向回一个由第三方web应用程序制定的url。
  2. 授权服务器(AS)验证用户(通过http头),并确定用户是否允许第三方应用程序访问用户资源(RS)
  3. 如果用户确认授权第三方应用程序,授权服务器(AS),将会重定向到由第一步第三方应用程序设定的一个url,并返回一个授权码(就是个临时认证字符串)。
  4. 第三方应用程序通过验证并传入由上一步获取的授权码参数再去授权服务器上验证并获取一个令牌。

隐式授权模式 (Implicit Grant):

  1. 用户访问第三方应用程序时(client),第三方应用将用户重定向到授权服务器(AS)。
  2. 授权服务器(AS)生成一个页面,来提供给用户是否授权
  3. 如果用户授权,授权服务器(AS)向第三方应用页面返回令牌
  4. 第三方应用获取到上一步返回的令牌,去资源服务器获取用户的资源(前提是令牌没问题)

密码模式 (Resource Owner Password Credentials Grant):

简单来说就是把密码托管给第三方应用,所以在这里。我们要确保第三方应用的高度可信任

  1. 用户(RO)向第三方应用程序(client)提供账号密码。
  2. 第三方应用程序获取到上一步的账号和密码,向授权服务器发送请求
  3. 授权服务器认证账号密码正确后,再向第三方应用程序提供一个令牌

Client凭证授权 (Client Credentials Grant):

这种是最不安全的一种模式,过程并不需要用户去参与,完全就是第三方应用程序与授权服务器的交流

  1. 用户(RO)访问第三方应用程序
  2. 第三方应用程序通过自定义的验证方式,拿到令牌。无需通过用户去认证
  3. 访问资源服务器(RS)

Oauth2.0详解,Oauth2.0协议原理的更多相关文章

  1. 百度大脑UNIT3.0详解之知识图谱与对话

    如今,越来越多的企业想要在电商客服.法律顾问等领域做一套包含行业知识的智能对话系统,而行业或领域知识的积累.构建.抽取等工作对于企业来说是个不小的难题,百度大脑UNIT3.0推出「我的知识」版块专门为 ...

  2. 百度大脑UNIT3.0详解之数据生产工具DataKit

    在智能对话项目搭建的过程中,高效筛选.处理对话日志并将其转化为新的训练数据,是对话系统效果持续提升的重要环节,也是当前开发者面临的难题之一.为此百度大脑UNIT推出学习反馈闭环机制,提供数据获取.辅助 ...

  3. 13.详解oauth2授权码流程

    13.详解oauth2授权码流程 把登陆系统单独独立出来,可以给自己写的微服务用,也可以给第三方的系统调用我们的服务 显式的和隐式的,两种方式,

  4. (转载)详解7.0带来的新工具类:DiffUtil

    [Android]详解7.0带来的新工具类:DiffUtil 标签: diffutil 2017-04-17 18:21 226人阅读 评论(0) 收藏 举报  分类: Android学习笔记(94) ...

  5. 百度大脑UNIT3.0详解之嵌入式对话理解技术

    相信很多人都体验过手机没有网时的焦虑,没有网什么也做不了.而机器人也会遇到这样的时刻,没有网或者网络环境不好的情况下,无法识别用户在说什么,也无法回复用户.在AIoT(AI+物联网)飞速普及的现在,智 ...

  6. [转帖]万字详解Oracle架构、原理、进程,学会世间再无复杂架构

    万字详解Oracle架构.原理.进程,学会世间再无复杂架构 http://www.itpub.net/2019/04/24/1694/ 里面的图特别好 数据和云 2019-04-24 09:11:59 ...

  7. [转帖]详解Linux系统inode原理--硬链接、软链接、innodb大小和划分等

    详解Linux系统inode原理--硬链接.软链接.innodb大小和划分等 原创 波波说运维 2019-07-17 00:03:00 https://www.toutiao.com/i6713116 ...

  8. RocketMQ详解(一)原理概览

    专题目录 RocketMQ详解(一)原理概览 RocketMQ详解(二)安装使用详解 RocketMQ详解(三)启动运行原理 RocketMQ详解(四)核心设计原理 RocketMQ详解(五)总结提高 ...

  9. 淘宝JAVA中间件Diamond详解(2)-原理介绍

    淘宝JAVA中间件Diamond详解(二)---原理介绍 大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解.本次为大家带来的是diamond核心原理的介绍,主要包括server ...

随机推荐

  1. optimizing Wi-Fi solution for International School

    https://aweisoft.azurewebsites.net/Knowledge/Cisco/OptimizeWiFi/OptimizeWiFi.aspx Connect me on Link ...

  2. 《深入理解 Java 虚拟机》读书笔记:虚拟机字节码执行引擎

    正文 执行引擎是 Java 虚拟机最核心的组成部分之一.在不同的虚拟机实现里,执行引擎在执行 Java 代码时可能会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也 ...

  3. 工具之scroolToIndex

    需求定位:导航中实现子元素滚动到父元素的最左侧 解决方案:查找该子元素的offsetLeft值,然后让父元素滚动offsetLeft,parenDom.scrollLeft = childDom.of ...

  4. Airport Simulation (数据结构与算法 – 队列 / Queue 的应用)

    Airport Simulation 是数据结构与算法教材中用于演示Queue的一个小程序(大多数教师似乎会跳过这个练习).主程序会通过输入总的运行时间.队列里可以等待的最多飞机数量,平均每个时间单元 ...

  5. Python 之 GIL 全局解释器锁

    GIL(全局解释器锁) GIL锁即全局解释器锁,是 CPython 解释器的特性.它的作用是保证了同一时刻只有一个线程执行 Python 字节码. 它并不是 Python 的特性,它的存在是 CPyt ...

  6. java-随机点名2(新手)

    //创建的一个包名. package qige; //导入一个包.import java.util.*; //定义一个类.public class SJdm { //公共静态的主方法. public ...

  7. 【Springboot】用Prometheus+Grafana监控Springboot应用

    1 简介 项目越做越发觉得,任何一个系统上线,运维监控都太重要了.关于Springboot微服务的监控,之前写过[Springboot]用Springboot Admin监控你的微服务应用,这个方案可 ...

  8. Journal of Proteome Research | Lipidomics reveals similar changes in serum phospholipid signatures of overweight and obese paediatric subjects (分享人:赵倩倩)

    文献名:Lipidomics reveals similar changes in serum phospholipid signatures of overweight and obese paed ...

  9. 物联网 软硬件系统 树莓派 单片机 esp32 小程序 网页 开发 欢迎相互交流学习~

    物联网软硬件开发 知识分享 多年学生项目开发经验 物联网 软硬件系统 树莓派 单片机 esp32 小程序 网页 开发 欢迎相互交流学习~ http://39.105.218.125:9000/

  10. Flutter 实现不同样式(有样式) 的TextField (可自定义),类似微博#话题#、@用户,(给TextField加TextSpan)

    描述 先上效果图 在项目中,有 @ 和 话题功能,需要在编辑时即可回显,但是官方原生的TextField不支持对部分文字定义不同的样式,所以封装了一个. 注意:这不是富文本插件,不支持在输入框中显示图 ...