学习 OAuth2.0
基于浏览器
访问后跳到登录页面,登录成功后跳转到授权页面,授权成功后跳转到redirect_uri指定的地址。
1.请求授权。
http://localhost:8080/oauth/authorize?client_id=unity-client
&redirect_uri=http%3a%2f%2fwww.baidu.com
&response_type=code&scope=read
- 地址是
/oauth/authorize. client_id表示厂商的唯一标识,在厂商申请资质时自动生成的。redirect_uri回调地址,认证成功后带着code重定向该地址。response_type响应类型。scope权限范围。
2.授权成功后回调地址
http://localhost:8080/unity/dashboard.htm?code=zLl170
- 地址是
redirect_uri里配置的。 code临时授权码。
3.通过code换取access_token
http://localhost:8080/oauth/token?client_id=unity-client
&client_secret=unity&grant_type=authorization_code
&code=zLl170&redirect_uri=http%3a%2f%2fwww.baidu.com
- 地址是
/oauth/token。 client_id表示厂商的唯一标识,在厂商申请资质时自动生成的,不可修改,全局唯一。client_secret表示厂商的密码,在厂商申请资质时自动生成的,可以修改。grant_type发放类型。code授权成功后在回调地址里带的那个code。redirect_uri回调地址,要与获取code的回调地址保持一致。
4.获取access_token响应的数据
{"access_token":"3420d0e0-ed77-45e1-8370-2b55af0a62e8",
"token_type":"bearer","refresh_token":"b36f4978-a172-4aa8-af89-60f58abe3ba1",
"expires_in":43199,"scope":"read"}
access_token我们要的就是这个token,以后带着这个token访问我们的系统就畅通无阻了。token_type类型,还没搞懂具体含义。refresh_token刷新token有效时间时用。expires_in过期时间,单位还没搞懂。scope权限范围,和申请时配置一致。
5.获取access_token后访问资源 [GET]
http://localhost:8080/unity/dashboard.htm?
access_token=3420d0e0-ed77-45e1-8370-2b55af0a62e8
- 以后就可以带着token访问我们的站点资源了,就好像用户登录后操作一样。
6.刷新access_token [GET]
http://localhost:8080/oauth/token?client_id=mobile-client&client_secret=mobile
&grant_type=refresh_token&refresh_token=b36f4978-a172-4aa8-af89-60f58abe3ba1
- 地址
/oauth/token。 client_id表示厂商的唯一标识,在厂商申请资质时自动生成的,不可修改,全局唯一。client_secret表示厂商的密码,在厂商申请资质时自动生成的,可以修改。grant_type发放类型。refresh_token获取token时得到的。
spring权限配置的要求
用户有个角色可以访问/openapi 客户端有个角色可以访问/openapi 用户把自己的openapi的访问权限给客户端,客户端拿着token才能访问用户的/openapi
已经实现OAuth2的一些开放平台
- 豆瓣 http://developers.douban.com/wiki/?title=oauth2
- 淘宝 http://open.taobao.com/doc/detail.htm?id=118
- 百度 http://developer.baidu.com/wiki/index.php?title=docs/oauth
- 易信 http://open.yixin.im/document/oauth/web
- 腾讯 http://wiki.open.qq.com/wiki/mobile/OAuth2.0%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3
Oauth2参考资料
- 《OAuth2.0标准》IETF标准文档。
- 《OAuth 2 开发人员指南(Spring security oauth2)》这篇文章比较晦涩,但是核心。
- 《OAUTH2核心参数说明》这篇把主要url介绍了一遍,其实oauth2多数都支持get提交参数。
- spring-oauth-server.这是一个demo,根据spring官方demo改的。
- spring-security-oauth,官方源码。
- oauth2,spring的官方demo。
- 《spring security oauth2 参考的配置》
- 《Spring Security 与 Oauth2 整合 步骤》
- 《OAuth 2 Developers Guide》
- 《Security Namespace Configuration》spirng security配置详细介绍。
- spring-security-oauth官方首页。
- 《理解OAuth 2.0》
学习 OAuth2.0的更多相关文章
- OAuth2.0学习(1-12)开源的OAuth2.0项目和比较
OAuth2.0学习(2-1)OAuth的开源项目 1.开源项目列表 http://www.oschina.net/project/tag/307/oauth?lang=19&sort=t ...
- SpringBootSecurity学习(14)前后端分离版之 OAuth2.0介绍
登录总结 前面基本介绍了security的常规用法,同时介绍了JWT和它的一个简单实现,基本上开发中遇到的登录问题都能解决了,即使在分布式开发,或者微服务开发中实现登录也基本没有问题了.securit ...
- SpringBootSecurity学习(15)前后端分离版之 OAuth2.0简单示例
OAuth2.0 OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者.客户端来申请资源,资源所有者同意以后,资源服务器可以向客户端颁发令牌.客户端通过令牌,去请求数据.也就是说, ...
- OAuth2.0学习(2-1)Spring Security OAuth2.0 开发指南
开发指南:http://www.cnblogs.com/xingxueliao/p/5911292.html Spring OAuth2.0 提供者实现原理: Spring OAuth2.0提供者实际 ...
- OAuth2.0学习(1-11)新浪开放平台微博认证-使用OAuth2.0调用微博的开放API
使用OAuth2.0调用API 使用OAuth2.0调用API接口有两种方式: 1. 直接使用参数,传递参数名为 access_token URL 1 https://api.weibo.com/2/ ...
- OAuth2.0学习(1-2)OAuth2.0的一个企业级应用场景 - 新浪开放平台微博OAuth2.0认证
http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5 开发者可以先浏览OAuth2.0的接口文档,熟悉OAuth2.0的接口及参数的含义,然后我们根据应用场景各自 ...
- OAuth2.0学习(1-8) 授权方式五之Access_Token令牌过期更新
OAuth2.0的Access_Token令牌过期更新 如果用户访问的时候,客户端的"访问令牌"已经过期,则需要使用"更新令牌"申请一个新的访问令牌. 客户端发 ...
- OAuth2.0学习(1-3)OAuth2.0的参与者和流程
OAuth(开放授权)是一个开放标准.允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息.而这种授权无需将用户提供用户名和密码提供给该第三方网站. OAuth允许用户提供一个令牌给第 ...
- OAuth2.0学习(1-1)OAuth2.0是什么?
目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放平台进行授权的问题 OAuth就是用于为第三方应用授权访问用户的资源应用的. 目前有OAuth1. ...
随机推荐
- javascript的一些bug
JavaScript是如今最受欢迎的编程语言之一,但受欢迎同时就是该语言自身的各种特性带来的副作用,无论该语言多美妙,每天还是有成千上万的程序员弄出一堆bug.先不要嘲笑别人,或许你也是其中之一. 给 ...
- 【Java每日一题】20161207
package Dec2016; public class Ques1207 { public static void main(String[] args) { new Test(); new Te ...
- 用Apache 里面的ab做一个简单的压力测试
我用的是xampp环境包. D:\xampp\apache\bin 进入这路径, 找到ab.exe 尝试双击打开ab.exe 但不能如愿, 这两个都是一个压力的测试软件, 是apache自带的; 好 ...
- 应用服务器和Web服务器
如上图所示,绝大部分的公司会采用Apache+tomcat集群(或jetty集群)来部署公司的Web服务, Web服务器和应用服务器关系,先介绍一下我们常说的服务器: Tomcat服务器,是运行ser ...
- oracle/MySQL 中的decode的使用
MySQL decode()的等同实现 在Oracle中使用decode方法可以轻松实现代码和值之间的转换,但是在MySQL中该如何实现类似功能呢? MySQL中没有直接的方法可以使用 ...
- 详解spring 每个jar的作用
spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2. ...
- cnodejs社区论坛1--登陆
- Page Scroll Effects - 简单的页面滚动效果
Codyhouse 收集了一组页面滚动效果,就是目前大家很常见的用户在浏览网页的时候.一些效果虽然极端,但如果你的目标是创建一个身临其境的用户体验,他们是非常有用的.所有的动画都使用 Velocity ...
- 如何使用递归遍历对象获得value值
一般要用到递归,就要判断对象是否和父类型是否一样 这里演示简单的对象递归,还有数组递归类似. var obj = { a:{w:1,y:2,x:3}, b:{s:4,j:5,x:6}, c:{car: ...
- 如何将List<string>转化为string
Convert List, string. A List can be converted to a string. This is possible with the ToArray method ...