OAuth2学习笔记

news/2024/5/19 1:02:36

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放平台进行授权的问题,OAuth就是干这个的,OAuth2是OAuth协议的下一个版本,相比OAuth1,OAuth2整个授权流程更简单安全了,但不兼容OAuth1,具体可以到OAuth2官网http://oauth.net/2/查看,OAuth2协议规范可以参考http://tools.ietf.org/html/rfc6749。目前有好多参考实现供选择,可以到其官网查看下载。

本文使用Apache Oltu,其之前的名字叫Apache Amber ,是Java版的参考实现。使用文档可参考https://cwiki.apache.org/confluence/display/OLTU/Documentation。

OAuth角色

资源拥有者(resource owner:能授权访问受保护资源的一个实体,可以是一个人,那我们称之为最终用户;如新浪微博用户zhangsan;

资源服务器(resource server:存储受保护资源,客户端通过access token请求资源,资源服务器响应受保护资源给客户端;存储着用户zhangsan的微博等信息。

授权服务器(authorization server:成功验证资源拥有者并获取授权之后,授权服务器颁发授权令牌(Access Token)给客户端。

客户端(client:如新浪微博客户端weico、微格等第三方应用,也可以是它自己的官方应用;其本身不存储资源,而是资源拥有者授权通过后,使用它的授权(授权令牌)访问受保护资源,然后客户端把相应的数据展示出来/提交到服务器。“客户端”术语不代表任何特定实现(如应用运行在一台服务器、桌面、手机或其他设备)。 


1、客户端从资源拥有者那请求授权。授权请求可以直接发给资源拥有者,或间接的通过授权服务器这种中介,后者更可取。

2、客户端收到一个授权许可,代表资源服务器提供的授权。

3、客户端使用它自己的私有证书及授权许可到授权服务器验证。

4、如果验证成功,则下发一个访问令牌。

5、客户端使用访问令牌向资源服务器请求受保护资源。

6、资源服务器会验证访问令牌的有效性,如果成功则下发受保护资源。

更多流程的解释请参考OAuth2的协议规范http://tools.ietf.org/html/rfc6749。

转载于:https://my.oschina.net/liuyuantao/blog/804880


http://www.niftyadmin.cn/n/2097857.html

相关文章

解析器

源码分析 1 在调用request.data时,才进行解析,由此入手propertydef data(self):if not _hasattr(self, _full_data):self._load_data_and_files()return self._full_data2 查看self._load_data_and_files()方法---->self._data, self._files self._p…

了解javascript中的apply和call

apply和call是javascript中很重要的方法,虽然平时编程很少接触到,但是JS框架中到处在使用这2个方法。 这2个方法是在Function.prototype中,也就是说每个JS函数都有这2个方法。 alert(Function.prototype.hasOwnProperty("apply")…

2018.6.14

2018.6.14 引入回跳规则(BackJump Rule): [I1,P∘,I2]∥F↪[I1,ℓ]∥F,(C→l)if{[I1,P∘,I2]⊭FExistsCs.t.:F⇒(C→l)I1⊨Cvar(ℓ)undef.inI1var(ℓ)appearsinF[I_1,P^{\circ},I_2]\lVert F\hookrightarrow [I_1,\ell]\lVert F, (C\to l)~if \begin{cases}[I_1,P^{\circ},I…

进制间的互相转换适用版

好久不用进制转换,都忘了 今天回想一下,记录下自己最适合的方法,就是把要转换的进制先换成二进制,再转成目标进制 先是十进制转二进制: 依次除于2,能整除的记录0,不能整除的记录1 4这就是最后的…

计算机里面没有桌面的选项,解决鼠标右击桌面弹出菜单中没有个性化选项问题...

替代方案:在家庭基础版中我们可以通过以下方法进行相关的设置和更改:请打开 控制面板 ,将 查看方式 设置为 大图标 。鼠标指针方案可以通过点击 鼠标 组件进行设置。账户图片可以通过点击 用户账户 组件后,选择 更改图片 进行设置…

【Kali】kali linux的安装和配置

资源准备制作U盘启动盘准备kali_Linux的分区禁用快速启动安装kali_linux配置wifi网络在这篇Blog中笔者将会讲解如何安装kali_linux,kali可以安装到虚拟机上,但这里笔者强烈建议不要安装到虚拟机上,虚拟机上的kali系统可能会有某些功能不能使用&#xff0…

javascript中的稀疏数组(sparse array)和密集数组

学习underscore.js数组相关API的时候,遇到了sparse array这个东西,以前没有接触过。 这里学习下什么是稀疏数组和密集数组。 什么是密集数组呢?在java和C语言中,数组是一片连续的存储空间,有着固定的长度。加入数组其…

C语言和C++中动态申请内存

在C语言和C的动态内存的使用方法是不同的&#xff0c;在C语言中要使用动态内存要包含一个头文件即 #include<malloc.h> 或者是#include<stdlib.h> 然后用C语言的系统函数 void * malloc(usigned size);来获得动态分配的内存&#xff0c;这个函数参数是需要申请的内…