文档章节

OAuth2学习笔记

小致dad
 小致dad
发布于 2016/12/13 09:24
字数 641
阅读 250
收藏 3
点赞 0
评论 0

目前很多开放平台如新浪微博开放平台都在使用提供开放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
粉丝 114
博文 496
码字总数 549917
作品 0
济南
技术主管
javadever/spring-boot

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

javadever ⋅ 2016/03/10 ⋅ 0

Django中,如何使用新浪微博API Oauth2的客户端

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

司徒春运 ⋅ 2012/03/11 ⋅ 1

OAuth2、Token、JWT

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

爬墙 ⋅ 2016/08/16 ⋅ 0

请推荐spring cloud微服务架构下的统一安全认证、用户登录管理案例。

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

suheme ⋅ 2017/03/13 ⋅ 6

Spring与Oauth2整合示例--spring-oauth-server

spring-oauth-server Spring与Oauth2的整合示例 项目用Maven管理 使用的技术与版本号 Spring (3.1.1.RELEASE) Spring Security (3.1.0.RELEASE) MyBatis (3.2.1) spring-security-oauth2 (1......

monkeyk7 ⋅ 2015/04/07 ⋅ 0

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

【OAuth2学习之路】简介

OAuth是什么? OAuth是Open Authorization(开放授权)的简写,是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名...

666B ⋅ 2014/09/09 ⋅ 0

2016重要学习框架类库

Bean Validation 2.0 发布,新的 JSR 规范 GitHub 上那些值得一试的 Java 开源库 http://www.oschina.net/news/75257/github-java-opensource-library LeakCanary - 内存泄漏监控 Bootique -......

yong230 ⋅ 2016/01/30 ⋅ 0

li.shengzhao/spring-oauth-server

#spring-oauth-server Spring与OAuth2的整合 项目用Maven管理, 字符编码: UTF-8 使用的技术与版本号 JDK (1.8.0_40) Servlet (3.1.0) Spring (4.1.6.RELEASE) Spring Security (4.0.4.RELEA......

li.shengzhao ⋅ 2015/03/11 ⋅ 0

spring-security-oauth2,configure(HttpSecurity http)方法的问题

最近学习spring-security-oauth2 分别继承了WebSecurityConfigurerAdapter和ResourceServerConfigurerAdapter 都有configure(HttpSecurity http)方法 这两个configure方法的关系是什么,同时......

jack_jones ⋅ 2017/10/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

对于程序员的招聘问题,作为软件人的一些吐槽和建议

作为软件人,找工作有时候似乎挺苦逼的。 说真的,让我去掉前面这句中“似乎”二字吧。就是苦逼!很多人都曾抱怨处在招聘的一方很糟糕——我们没有任何可靠的方式来甄别会写代码并且写得好的...

老道士 ⋅ 12分钟前 ⋅ 0

HDFS原理学习

一、概述 1、 Hadoop整合了众多的文件系统,首先提供了一个高层的文件系统抽象org.apache.hadoop.fs.FileSystem。然后有各个文件系统的实现类。 2、Hadoop是JAVA编写的,不同文件系统之间的交...

cjxcloud ⋅ 16分钟前 ⋅ 0

Linux下MySQL表名不区分大小写的设置方法(抄袭别人的)

Linux下MySQL表名不区分大小写的设置方法 MySQL表名不区分大小写的设置方法 在用centox安装mysql后,把项目的数据库移植了过去,发现一些表的数据查不到,排查了一下问题,最后发现是表名的大...

随风而浮沉 ⋅ 21分钟前 ⋅ 0

ubuntu下安装宋体simsun

sudo cp simsun.ttc /usr/share/fonts cd /usr/share/fonts sudo chmod 644 simsun.ttc 更新字体缓存: 代码: sudo mkfontscale 代码: sudo mkfontdir 代码: sudo fc-cache -fsv 安装chrome扩......

wangxuwei ⋅ 22分钟前 ⋅ 0

利用 ssh 传输文件

Linux 下一般可以用 scp 命令通过 ssh 传送文件: #把服务器上的 /home/user/a.txt 发送到本机的 /var/www/local_dir 目录下scp username@servername:/home/user/a.txt /var/www/local_dir...

大灰狼时间 ⋅ 33分钟前 ⋅ 0

web3j教程:android和java程序员如何使用web3j开发区块链以太坊

如何使用web3j为Java应用或Android App增加以太坊区块链支持,本教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤...

智能合约 ⋅ 55分钟前 ⋅ 0

web3j开发java或android以太坊智能合约快速入门

web3j简介 web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 可以通过它进行以太坊区块链...

笔阁 ⋅ 57分钟前 ⋅ 0

一起读书《深入浅出nodejs》-异步I/O

异步I/O “异步”这个名词其实很早就诞生了,但它大规模流行却是在Web 2.0浪潮中,它伴随着AJAX的第一个A(Asynchronous)席卷了Web。 为什么要异步I/O 关于异步I/O为何在Node里如此重要,这与...

小草先森 ⋅ 今天 ⋅ 0

JVM各种问题

1、如果启动什么都不设,会怎样? 先来看一个命令 [root@localhost bin]# java -XX:+PrintCommandLineFlags -version -XX:InitialHeapSize=29899008 -XX:MaxHeapSize=478384128 -XX:+PrintCo......

算法之名 ⋅ 今天 ⋅ 0

SAS笔记-宏2

宏是一种文本,一般来说其编译是在程序执行之前。 宏变量的创建 %let语句 %let macro_variables = text; %let是常见的宏变量建立方式,其编译就在执行前。如下例中,想要宏变量test等于数据集...

tonorth123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部