学习 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. ...
随机推荐
- 【转】NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...
- SQLProfiler_SQL抓包
有时候我们的某个程序或者应用在执行SQL语句时报错了, 我们需要拿到报错的SQL语句检查, 那么你可以借助:SQL Profiler工具来实现. 1.SQL Profiler是一个可以检测SQL服务器 ...
- C# 如何调用WebServer函数
WebServer(ASMX)服务程序网站的编写简单总结. WebServer中遇到的问题 编写WebServer程序VS运行调试时如果出现 System.Data.OracleClient.Orac ...
- iOS阶段学习第20天笔记(MRC内存管理)
iOS学习(OC语言)知识点整理 一.OC中的内存管理 1)概念:内存管理的对象为所有继承了NSObject的对象,对基本数据(如:int .float.double...)无效 OC中采用 ...
- 数据操作语言DML与运算符
数据操作语言DML(添加,修改,删除) 1.添加数据 insert into insert into 表名 (字段列表) values (值列表),值列表要和字段列表按顺序匹配. insert int ...
- EasyUI-扩大在DataGrid显示次网格的行
一.下载并引用:datagrid-detailview.js脚本文件 二.添加UrlInfo控制器,添加Index页面代码如下: @{ Layout = null; } <!DOCTYPE ht ...
- genymotion和eclipse连接问题,一直出错
前两天重装系统,但是在运行android代码的时候遇到了这样的问题 The connection to adb is down,and a server error has occured. You ...
- 《构建高性能web站点》随笔 无处不在的性能问题
前言– 追寻大牛的足迹,无处不在的“性能”问题. 最近在读郭欣大牛的<构建高性能Web站点>,读完收益颇多.作者从HTTP.多级缓存.服务器并发策略.数据库.负载均衡.分布式文件系统多个方 ...
- 《高可用MySQL》1 – Windows环境下压缩版MySQL安装
近日在读O’REILIY系列的<高可用MySQL>, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容.Master-Slave这东西吧,在许多公司都是标配,开发中基本天 ...
- 重新初始化 VS2010
开始->所有程序->Microsoft Visual Stdio 2005->Visual Stdio Tools->Visual Stdio 2005 命令提示 这时会弹出一 ...