文档章节

OAuth2学习笔记

小致dad
 小致dad
发布于 2016/12/13 09:24
字数 641
阅读 256
收藏 3

目前很多开放平台如新浪微博开放平台都在使用提供开放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

© 著作权归作者所有

共有 人打赏支持
小致dad
粉丝 123
博文 531
码字总数 583409
作品 0
济南
技术主管
javadever/spring-boot

spring-boot 概述 java 语言经过了多年的发展,生态系统完善,完全满足企业级应用。如果技术选型得当,对常用功能组件有积累,可以快速搭建系统,把主要精力放在业务逻辑上。 本项目尝试利用...

javadever
2016/03/10
0
0
Django中,如何使用新浪微博API Oauth2的客户端

最近在学习Django,并有幸的获得SAE Python的邀请码,于是开始创建一些应用。 我建立了名为ddmkchan项目,并建立应用sinaweibo,已上传至SAE。开始的想法是做新浪微博相关的,下载了新浪微博...

司徒春运
2012/03/11
1K
1
OAuth2、Token、JWT

参考: 理解OAuth 2.0 Json web token JSON Web Token (JWT) 简介 JWT学习笔记 关于 Token,你应该知道的十件事 Token存储方式解释:详说 Cookie, LocalStorage 与 SessionStorage 一句话解释...

爬墙
2016/08/16
508
0
请推荐spring cloud微服务架构下的统一安全认证、用户登录管理案例。

打算把系统迁移到spring cloud,zuul做api gateway,实现微服务框架。寻找一个统一管理授权、认证和用户登录注册的综合方案,实现SSO,app oauth2和web的统一安全管理。目前看了些基于sprin...

suheme
2017/03/13
6K
6
monkeyk7/spring-oauth-client

#spring-oauth-client spring-oauth-client depend onspring-oauth-server, it is the oauth2 client demos. 项目用Maven管理 使用的技术与版本号 JDK (1.7.0_40) Spring (4.1.6.RELEASE) Sp......

monkeyk7
2015/05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高三暑假我是怎么想开去学linux系统的

高三的时候,我有一句口头禅:“老了老了,现在做题越来越迟钝了”。当时整天日夜苦读,体重日益增加,脸色越来越黯淡,我在终于熬过了高考的时候,简直心里面乐得开了花。我终于可以去做自己...

linuxprobe16
24分钟前
0
0
Python 获得命令行参数的方法

需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys.argv[1] 参数2: sys.argv[2]

编程老陆
31分钟前
0
0
链队

队列用链表来表示时,需要用两个变量来记录队列两端的变化:theFront,theBack. 根据链接方向的不同,链队有两种链接方式(其实就是链表的头插入节点和尾插入节点,头删除节点和尾删除节点)。...

Frost729
35分钟前
0
0
IDEA toString() json模板

public java.lang.String toString() {java.lang.StringBuilder builder = new java.lang.StringBuilder();#set ($i = 0)#foreach ($member in $members)#if ($i == 0)builder.appen......

Mtok
45分钟前
0
0
Dubbo内核实现之SPI简单介绍

Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。那所谓的微内核+插件体系是如何实现的呢!即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLo...

明理萝
50分钟前
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部