首先下载oauth2.0服务器端库——Oauth2.0,我这里用它已经实现的mongo驱动来演示第三方网站如何申请授权
(当然我们还需要启动mongo服务),下面就用mongo目录里面的例子来测试一下
1,申请Client ID(注册一个开发者应用,填写应用ID,Secret以及回调网址)
访问
http://localhost/oauth/server/examples/mongo/addclient.php
填写 ID=50021 Secret=rainbow Callback=http://localhost/callback,提交后数据库中生成clients表
> db.clients.find()
{ "_id" : "50021", "pw" : "rainbow", "redirect_uri" : "http://localhost/callback" }
2,引导用户到授权页面授权(资源所有者检查应用的合法性,通过回调网址返回一个token给第三方网站)
引导用户访问
http://localhost/oauth/server/examples/mongo/authorize.php?
client_id=50021&
response_type=code
(注意这里选择的response_type=code)
我们这里为了简化流程,没有引入用户账户系统,所以没有登录功能,直接点击确认授权。浏览器跳转到
http://localhost/callback?
state=&
code=0d16076aff16ccfe29443cd98f964e22
我们就拿到一个临时token,此时查询数据库(包含过期时间和其它选项scope)
db.auth_codes.find()
{ "_id" : "0d16076aff16ccfe29443cd98f964e22", "client_id" : "50021", "redirect_uri" : "http://localhost/callback", "expires" : 1352687216, "scope" : "" }
3,第三方网站用这个token去换取access token
使用第二步中得到的临时token换取access token,发起请求如下:
http://localhost/oauth/server/examples/mongo/token.php?
code=0d16076aff16ccfe29443cd98f964e22&
client_id=50021&
client_secret=rainbow&
grant_type=authorization_code&
redirect_uri=http://localhost/callback
为了演示方便,这里的请求参数都是通过get方式传递的(修改了一点Oauth2.inc源码),真实的生产环境还是需要通过post方式或者header中携带参数的方式传递,这样会安全很多。
服务器返回
{
"access_token":"6974c7151aca644b908abe1923c57234",
"expires_in":3600,
"scope":null
}
此时查询数据库:
db.tokens.find()
{ "_id" : "6974c7151aca644b908abe1923c57234", "client_id" : "50021", "expires" : 1352690797, "scope" : null }
注:第二步获得的token和access token都有过期时间,可以在OAuth2.inc中配置。
4,使用access token访问受限资源
访问
http://localhost/oauth/server/examples/mongo/protected_resource.php? oauth_token=6974c7151aca644b908abe1923c57234
得到结果“This is a secret.”
可以看出OAuth2.0比OAuth1.0版本要简单很多,由于采用了ssl加密,参数对应用层来说都是明文传递,客户端与服务器端都省去了不必要的加密解密工作。
分享到:
相关推荐
RFC 6749 OAuth 2.0 授权框架 (正式版中文翻译,PDF)
通过点击viewbutton获取用户openid,实现方式oauth2.0认证
OAuth2.0授权码模式.doc OAuth2.0授权码模式的文档,希望可以帮助学习者
基于Django2.1.2的OAuth2.0授权登录 大学生课程设计 基于Django2.1.2的OAuth2.0授权登录的课程设计 自己大二写的课程设计
开放平台标准协议简介之RFC 6749-OAuth 2.0授权框架; The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource ...
springboot 集成oauth2.0服务器,基于oauth2.0授权码形式集成
Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...
asp.net WebAPI OWIN OAuth2.0授权自定义返回结果及错误或异常问题处理核心代码,详情: https://www.cnblogs.com/wgx0428/p/12315546.html
OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。...要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用代表用户获得访问的权限。
Java,腾讯微博通过OAuth2.0授权,可发文本微博的示例源代码。
实现OAuth2授权,并且实现单点登录的小例子,请使用vs2015打开
完整Oauth 2.0 代码实现,包含数据库脚本,使用说明,导入数据库脚本,修改数据库配置可直接运行。
2、得到Code后,把Code及其它必要参数,需POST至第三方页面:https://oauth.taobao.com/token,获取得到淘宝平台返回的access_token;(见tbconnect.asp页面里GetAccess_Token()函数) 3、得到Token的同时,淘宝平台...
该套代码主要用于开发微信公众账号,定制菜单和消息自动回复。这两个功能可以参考imooc里的两个微信开发教程来学习。该代码在这基础上集成了OAuth2.0网页授权。
Spring boot+Spring Security Oauth2.0,Sprint cloud+Spring Security Oauth2集成。四种认证方式。附带有代码,和案例,案例,还有视频链接。我保证看完就回,如果视频链接失效,评论回复我,我单独再给你一份。
IOS最新新浪微博开放平台Oauth2.0授权获取Access_Token的Demo
Oauth2.0,第三方登录鉴权验证教程。
2、得到Code后,把Code及其它必要参数,需POST至第三方页面:https://oauth.taobao.com/token,获取得到淘宝平台返回的access_token; 3、得到Token的同时,淘宝平台同时返回了部分用户信息,包括:淘宝用户账号ID...