学习 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. ...
随机推荐
- c# 指定的存储区提供程序在配置中找不到,或者无效
<system.data> <DbProviderFactories> <remove invariant="System.Data.SQLite"/ ...
- 【转】C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用
Html Agility Pack下载地址:http://htmlagilitypack.codeplex.com/ Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂 ...
- 【转】关于redis.conf的参数配置
1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/ru ...
- 反射(Reflection)的SetValue遇上DBNULL转换为string
有网友回馈说提供的代码有bug.你可以从这个链接下载得到:http://www.cnblogs.com/insus/p/3384472.html 其中有一个Utility,它是把DataTable转换 ...
- 从C#到Objective-C,循序渐进学习苹果开发(6)--视图控制器的使用
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...
- ASP.NET中Request.RawUrl、Request.Url的区别
如果访问的地址是: http://hovertree.com/guestbook/addmessage.aspx?key=hovertree%3C&n=myslider#zonemenu 那么 ...
- 根据日期查询access数据库
获取指定日期的记录 1.select Field1 from A where format("yyyy-MM-dd",Field1)=#2011-10-07# 有时不能获取记录 ...
- ASP.NET Core开发-使用Nancy框架
Nancy简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能 ...
- ASP.NET MVC 网站开发总结(一)
历经一个多月的努力,工作室的门户网站(http://www.wingstudio.org)终于结束了内部公测. 仔细算一下,大概把网站开发出1.0版本大概用了一个月的时间(主要是利用课余时间),其后大 ...
- C#项目中常用到的设计模式
1. 引言 一个项目的通常都是从Demo开始,不断为项目添加新的功能以及重构,也许刚开始的时候代码显得非常凌乱,毫无设计可言.但是随着项目的迭代,往往需要将很多相同功能的代码抽取出来,这也是设计模式的 ...