学习 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. ...
随机推荐
- Newtonsoft.Json 用法
Newtonsoft.Json 是.NET 下开源的json格式序列号和反序列化的类库.官方网站: http://json.codeplex.com/ 使用方法 1.首先下载你需要的版本,然后在应用程 ...
- iOS 阶段学习第25天笔记(iOS沙盒机制介绍)
iOS学习(OC语言)知识点整理 一.iOS沙盒机制介绍 1)概念: 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒 ...
- Autofac Container 的简单的封装重构
为了使用方便,对Autofac container的简单封装,记录如下,备以后用或分享给大家,欢迎讨论! using Autofac; using Autofac.Core.Lifetime; usi ...
- Windows Server 2012 配置多用户远程桌面
前段时间因为需要多用户同时远程连接 windows server 2012,但找了半天也没找到远程桌面管理,最后从搜索中找到如下方法,经测试可行! 打开注册表,进入路径: [HKEY_LOCAL_MA ...
- Android使用SQLite数据库(3)
插入新数据到SQLite数据库,首先定义一个ContentValues变量,然后使用put方法: public void put (String key, String value) 其中key是字段 ...
- 【Java每日一题】20161025
20161024问题解析请点击今日问题下方的"[Java每日一题]20161025"查看 package Oct2016; import static java.lang.Math ...
- java servlet手机app访问接口(二)短信验证
今天找了几个短信平台,其实最想使用的一个是sharesdk,使用它上面http api短信功能,不仅价格低,而且最少可以充值100RMB,但是审核过于严格,对应APP还必须集成他们的短信功能,而且要上 ...
- 高性能的分布式服务框架 Dubbo
我思故我在,提问启迪思考! 1. 什么是Dubbo? 官网:http://dubbo.io/,DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及作为SOA服务治理的 ...
- 窗口之间的主从关系与Z-Order
说明:这是本人2008年写的一篇旧文,从未公开发表过.其中除了一小段描述Window Mobile平台的内容已过时,大部分内容对于从事Win32开发的程序员还是很有参考价值的,也是对自己从事Windo ...
- TestNG官方文档中文版(3)-testng.xml
TestNG的官方文档的中文翻译版第3章,原文请见 http://testng.org/doc/documentation-main.html 3 - testng.xml 调用TestNG由几种不同 ...