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 ...
随机推荐
- php开发环境是什么
软件开发环境(Software Development Environment,SDE)是指在基本硬件和数字软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE.它由软 ...
- 洛谷P5018 对称二叉树——hash
给一手链接 https://www.luogu.com.cn/problem/P5018 这道题其实就是用hash水过去的,我们维护两个hash 一个是先左子树后右子树的h1 一个是先右子树后左子树的 ...
- C#设计模式:策略者模式(Stragety Pattern)
一,什么是策略模式? 1,针对同一命令或行为,不同的策略做不同的动作. 2,比如针对一组算法,将每个算法封装到具有公共接口的独立的类中,从而使它们可以相互替换.策略模式使得算法可以在不影响到客户端的情 ...
- vue iview分页
距离上次博客更新已经快一个月了,期间也有想法在空闲的时候更新几篇博文. 燃鹅,最近懒癌作祟,丢掉的东西越来越多,再不遏止的话就真成癌了. 趁着刚看完一篇心灵鸡汤,让打满鸡血的我总结下前段时间用到的iv ...
- js的预解析和作用域
预解析指的就是,在js文件或者script里面的代码在正式开始执行之前,进行的一些解析工作.这个工作很简单,就是在全局中寻找var关键字声明的变量和通过function关键字声明的函数. 1.寻找 v ...
- ABP框架按条件导出
web层 .js导出事件: //导出为excel文档 $('#btn-export').click(function () { //得到查询的参数 var temp = { //这里的键的名字和控制器 ...
- Introduction to Sound Programming with ALSA
ALSA stands for the Advanced Linux Sound Architecture. It consists of a set of kernel drivers, an ap ...
- java写文件UTF-8格式
String fileName = dir + File.separator + date + File.separator + (file.list().length + 1) + ".t ...
- 创建工程时出现 A project with this name already exists 提示
https://segmentfault.com/a/1190000018513060 创建项目时没注意,后来发现放错了位置或其他问题,想要重新创建同名项目,只在文件夹处删除是不行的.会出现以下提示 ...
- 20-基于 DSP TMS320C6455的6U CPCI高速信号处理板卡
基于 DSP TMS320C6455的6U CPCI高速信号处理板卡 1. 板卡概述 基于 DSP TMS320C6455的CPCI高速信号处理板卡是新一代高速DSP处理平台,广泛用于DSP性能验证, ...