oauth2学习
oauth2
生词:
- 授权码模式(authorization code)
- 简化模式(implicit)
- 密码模式(resource owner password credentials)
- 客户端模式(client credentials)
问题:
- 分享目标:大致了解oauth的运行流程,及如何使用oauth(代码实现)。
- oauth是什么?
- oauth是目前最流行的一套授权机制标准。
- oauth的应用场景?
- 假设一个例子:
- 有一个在线读取pdf的网站。极速PDF在线阅读
- 我们想要在线阅读百度云存储的pdf文档,那么就需要让极速pdf来读取百度云存储的pdf,那么极速pdf是怎样获取到用户的授权呢?
- 传统的做法是我们将百度云账号密码告诉极速pdf,这样后者就可以进行读取pdf文档了
- 这样的做法会有几个严重的缺点
- 极速pdf为了后续的在线阅读服务可能会保存我们的百度云账号密码
- 极速pdf会读取我们百度云所有资料。
- 只有我们修改密码后才能控制极速pdf的权利,于此同时我们用的其他第三方应用也都失效了
- 这时由国外的几位大佬共同发起的,为API访问授权提供一套标准:Oauth
- 假设一个例子:
oauth2.0 运行流程

A:第三方请求用户获取授权
B:用户同意授权
C:第三方带着用户授权向认证服务器获取token
D:认证服务器校验用户授权后,返回token
E:带着token请求资源服务器
F:资源服务器校验token 后返回所需资源
授权码模式(authorization code)

- 第三方服务跟用户索要授权
- 用户给予授权
- 浏览器拿着加密的用户信息和回调地址给认证服务器
- 认证服务器校验用户信息和回调地址后返回授权码。
- 第三方应用再根据授权码和回调地址请求认证服务器
- 认证服务器校验后返回token
简化模式(implicit grant type)

- 执行流程:
- 获取用户授权
- 将用户client信息和回调地址发送到认证服务器
- 认证服务器校验成功后返回重定向地址和token对象的哈希值
- 浏览器带着重定向地址向资源服务器发出请求
- 资源服务器返回一个页面,根据hash值获取token信息
密码模式(Resource Owner Password Credentials Grant)

- 执行流程
- 用户向客户端提供账号密码
- 客户端用账号密码请求认证服务器
- 认证服务器校验成功后返回token
客户端模式(Client Credentials Grant)

- 第三方服务带上client信息向认证服务器请求获取token
认证服务器校验client信息后返回token
oauth2学习的更多相关文章
- OAuth2学习及DotNetOpenAuth部分源码研究
OAuth2学习及DotNetOpenAuth部分源码研究 在上篇文章中我研究了OpenId及DotNetOpenAuth的相关应用,这一篇继续研究OAuth2. 一.什么是OAuth2 OAuth是 ...
- OAuth2学习中的一些高频问题的QA
关于OAuth2相信很多初学者都有一些疑问,胖哥将这些疑问一一收集了起来做成了QA,或许能帮助学习者. OAuth2相关的QA Q:OAuth2 的一些常用场景? A: OAuth2主要用于API授权 ...
- Spring Security OAuth2学习
什么是 oAuth oAuth 协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需 ...
- OAuth2学习笔记
参考:https://aaronparecki.com/oauth-2-simplified/ 1.角色定义 应用程序(客户) 需要获取用户的账号信息,获得相关权限. API服务器 资源服务器就是AP ...
- 使用DotNetOpenAuth搭建OAuth2.0授权框架
标题还是一如既往的难取. 我认为对于一个普遍问题,必有对应的一个简洁优美的解决方案.当然这也许只是我的一厢情愿,因为根据宇宙法则,所有事物总归趋于混沌,而OAuth协议就是混沌中的产物,不管是1.0. ...
- DotNetOpenAuth搭建OAuth2.0
使用DotNetOpenAuth搭建OAuth2.0授权框架 标题还是一如既往的难取. 我认为对于一个普遍问题,必有对应的一个简洁优美的解决方案.当然这也许只是我的一厢情愿,因为根据宇宙法则,所有事物 ...
- C#搭建Oauth2.0认证流程以及代码示例
我认为对于一个普遍问题,必有对应的一个简洁优美的解决方案.当然这也许只是我的一厢情愿,因为根据宇宙法则,所有事物总归趋于混沌,而OAuth协议就是混沌中的产物,不管是1...0a还是2.,单看版本号就 ...
- java技术
线程池的原理及实现:https://blog.csdn.net/hsuxu/article/details/8985931 Java高级工程师面试题总结及参考答案:https://www.cnblog ...
- OAuth2.0学习(1-12)开源的OAuth2.0项目和比较
OAuth2.0学习(2-1)OAuth的开源项目 1.开源项目列表 http://www.oschina.net/project/tag/307/oauth?lang=19&sort=t ...
随机推荐
- 5期-Metasploitable3专题课程
metasploitable2基于ubantu的渗透演练环境.Rapid7官方长时间未更新,导致跟不上当前的节奏.metasploitable3出世. metasploitable2配合metaspl ...
- Node.js实战2:模块使用入门。
NodeJS有丰富的三方模块,借助这些模块,可以快速的开发各类应用.这使用Nodejs可以进行很便捷.快速的开发. 1.安装与加载模块内核.三方 使用npm可以搜索.安装.卸载模块. 例: 搜索模块 ...
- Learning OSG programing---osgAnimation(2)
osg::Node* createBase(const osg::Vec3& center,float radius) { ; ; *radius; *radius; osg::Vec3 v0 ...
- Vue3.0响应式实现
基于Proxy // 弱引用映射表 es6 防止对象不能被回收 let toProxy = new WeakMap(); // 原对象: 代理过得对象 let toRaw = new WeakMap( ...
- Excelvba从另一个工作簿取值
Private Sub getValue_Click() Dim MyWorkbook As Workbook Set MyWorkbook = Application.Workbooks.Open( ...
- [HDU5807] [BestCoder Round #86 1004] Keep In Touch (DP)
[HDU5807] [BestCoder Round #86 1004] Keep In Touch (DP) 题面 有三个人从一张N个点无重边的有向无环图上的三个点出发,每单位时间,他们分别选择当前 ...
- luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树)(主席树)
luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目 #include<iostream> #include<cstdlib> #include< ...
- python 类的私有属性和方法 (转载)
转载:http://www.runoob.com/python/python-object.html 类属性与方法 类的私有属性 __private_attrs:两个下划线开头,声明该属性为私有,不能 ...
- MySQL的安装及简单调优
MySQL的安装及调优 1. 安装注意点 ubuntu18的安装方式 sudo apt-get update sudo apt-get install -y mysql-server mysql-cl ...
- springboot中使用RabbitMq
转载:http://www.ityouknow.com/springboot/2016/11/30/spring-boot-rabbitMQ.html RabbitMQ 即一个消息队列,主要是用来实现 ...