文档章节

OAuth2学习笔记

小致dad
 小致dad
发布于 2016/12/13 09:24
字数 641
阅读 260
收藏 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
粉丝 135
博文 535
码字总数 580132
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
35分钟前
1
0
OSChina 周四乱弹 —— 上帝对我单身年限的惩罚越来越长了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享张卫健的单曲《身体健康》 《身体健康》- 张卫健 手机党少年们想听歌,请使劲儿戳(这里) 昨天是重阳节咯, 可惜小小编辑总是晚...

小小编辑
37分钟前
7
0
django rest framework 外键序列化方法与问题总结

django rest framework 外键序列化方法与问题总结 当借口中需要出现一对多关系的时候,我们可以用rest_framwork的序列化功能来处理,代码如下. # models.pyfrom django.db import modelscl...

_Change_
昨天
1
0
SingleNumber136 leetCode

Given a non-empty array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you im......

woshixin
昨天
1
0
String ,  StringBuffer ,  StringBuilder的区别

String , StringBuffer , StringBuilder的区别 String 首先,String 是用来表示一个字符串常量的,它是一个不可变对象,意味着,一旦我们创建了某个字符串之后,就不能再改变它的值了,我们可...

tsmyk0715
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部