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 ...
随机推荐
- vue配置域名访问
vue配置域名访问其实很简单,新建一个vue的项目,不废话,直接上截图 红色框住的两行就是设置访问的域名以及端口,默认是host: localhost port: 8080 像这样修改之后,重启项目, ...
- phpcms列表分页ajax加载更多
1.在phpcms\modules\content\index.php文件中添加以下函数: /*列表分页ajax加载更多*/ public function homeajaxlist() { if( ...
- 基于dvwa环境下级别为low的SQL手工注入教程
基于dvwa环境下级别为low的SQL手工注入教程: 首先是进入已搭建好的dvwa环境中去(一定要搭建好dvwa环境才能进行下面的操作),这可能会是一些初学者所面临的的第一个问题,比如我,曾为了寻找这 ...
- 【xinsir】githook之precommit分享
钩子类型 使用node编写githook,以pre-commit为例: 1.在项目下配置自动生成pre-commit文件,一般可以在启动项目的脚本下添加: modifyPreCommit: funct ...
- eclipse 从git取项目,导入为maven项目,新加的方法,报加载主类错误
eclipse 从git取项目,导入为maven项目,新加的方法,报加载主类错误 具体描述: 整体编译能够编译成功,但新加一个java,里面创建一个main方法,运行时,报无法加载主类的错误, 整体编 ...
- [HDU 5293]Tree chain problem(树形dp+树链剖分)
[HDU 5293]Tree chain problem(树形dp+树链剖分) 题面 在一棵树中,给出若干条链和链的权值,求选取不相交的链使得权值和最大. 分析 考虑树形dp,dp[x]表示以x为子树 ...
- springcloud费话之Eureka接口调用(feign)
目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...
- JavaScript设计模式-组合模式(表单应用实现)
书读百遍其义自见 <JavaScript设计模式>一书组合模式在表单中应用,我问你答答案. 注:小编自己根据书中的栗子码的答案,如有错误,请留言斧正. 另:如有转载请注明出处,谢谢啦 &l ...
- setter getter 方法
MRC下setter.getter方法写法.重写dealloc方法 @interface People : NSObject @property (nonatomic,strong) NSString ...
- 八核浮点型DSP的双千兆网接口设计方案
千兆网络接口具有数据传输速率快.连接方便.可以即插即用的优点,使得其应用较为广泛.随着电子技术和处理器的发展,很多应用场合的数据通信速率超过千兆网口的实际传输速率.例如,在A/D采样中,需要直接存储A ...