首先下载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加密,参数对应用层来说都是明文传递,客户端与服务器端都省去了不必要的加密解密工作。
分享到:
相关推荐
微信OAuth2.0授权是一种广泛应用于移动应用和网站的第三方登录解决方案,主要目的是为了安全地获取用户的微信身份标识——openid,以便提供个性化服务或者与其他微信功能集成。在本文中,我们将详细探讨微信OAuth2.0...
#### 二、OAuth2.0的应用场景——第三方登录 在日常生活中,我们经常遇到需要使用第三方账户进行登录的情况,如使用微信、QQ或微博账号登录其他应用或网站。这种方式极大地简化了用户的注册流程,提高了用户体验,...
OAuth2.0是一种广泛使用的授权框架,用于在第三方应用与用户资源之间建立安全的数据共享机制。这个框架允许用户授权第三方应用访问他们存储在特定服务提供商(如Google或Facebook)上的数据,而无需分享他们的登录...
OAuth 2.0 是一种广泛使用的开放标准授权框架,它允许第三方应用安全地访问用户的受保护资源,而无需用户向第三方应用泄露其用户名和密码。在这个"oauth2.0例子"中,我们有两个项目——tonr 和 sparklr,它们展示了...
总结来说,OAuth 2.0 是一种灵活且广泛使用的授权协议,它简化了用户授权第三方应用访问其在线资源的过程,同时也提供了多种安全机制来保护用户的隐私。无论是开发者还是用户,理解OAuth 2.0的工作原理都至关重要,...
自2013年以来,OAuth2.0在国内的应用日益广泛,特别是在第三方登录领域,已成为主流技术之一。 #### 二、OAuth2.0的安全焦点 OAuth2.0虽然提供了便利的服务互通方式,但其安全性一直是业界关注的重点。以下是一些...
在OAuth2.0中,资源所有者(如用户)授予了客户端(如移动应用或第三方服务)一定的权限,允许它们在资源所有者的许可下访问资源服务。资源服务通常是服务器端的应用,它的职责是验证令牌的有效性,并基于此决定是否...
OAuth 2.0 是一种授权协议,旨在解决分布式 web 服务和云计算中第三方应用访问受保护资源的问题。在 OAuth 2.0 中,客户端和资源拥有者的角色被分离,客户端代表资源拥有者提出请求来访问受保护资源,但无需资源拥有...
OAuth 2.0 是一种授权协议,旨在解决第三方应用访问受保护资源的问题。该协议将客户端和资源拥有者的角色进行分离,从而解决了传统的基于客户端-服务器的身份验证模型中的问题。 背景知识: OAuth 2.0 是下一代的...
Apache Shiro是一个强大的Java安全框架,它提供了身份验证、授权、会话管理和加密等功能,而OAuth2则是一种开放标准,用于授权第三方应用访问用户资源。将Shiro与OAuth2集成,可以实现更灵活的安全控制,特别是在...
在微信生态系统中,微信2.0授权是一种关键的交互方式,允许第三方应用获取用户的唯一标识——openid,以便在不暴露用户隐私的情况下为用户提供个性化的服务。这个过程涉及到微信OAuth2.0授权协议,它是一个安全的...
OAuth 2.0是一种授权框架,它允许第三方应用在用户许可的情况下访问其私有资源,而无需共享用户的原始凭证。RFC 6749是定义OAuth 2.0协议的标准文档。OAuth 2.0的核心在于,它为用户提供了一种安全的方式,使他们...
1. **用户授权**:用户通过第三方应用请求资源时,会被重定向至认证服务器进行身份验证,并授权第三方应用访问其资源。 2. **获取授权码**:一旦用户同意授权,认证服务器会将用户重定向回第三方应用,并附带一个...
这个压缩包文件"安卓Android源码——第三方登录(QQ空间+新浪微博).zip"包含了实现QQ空间和新浪微博登录功能的源代码,这对于理解如何集成社交平台登录服务具有重要的学习价值。下面我们将详细探讨这个项目中的关键...
1. **授权过程**:用户点击第三方登录按钮后,应用会跳转到相应的社交平台,用户在该平台上授权应用获取其基本信息。 2. **获取Access Token**:授权成功后,社交平台会返回一个Access Token,它是用户授权的凭证。 ...
1. **OAuth 2.0授权协议**:第三方登录通常基于OAuth 2.0协议,这是一种授权框架,允许用户授权第三方应用访问其在特定服务提供商的数据,而无需共享用户名和密码。 2. **开发者账号注册**:首先,你需要在新浪、...
本资源"安卓Android源码——第三方登录(QQ空间+新浪微博).rar"提供了实现这一功能的源代码,帮助开发者了解并实践这一过程。 首先,我们要理解第三方登录的基本原理。第三方登录是通过OAuth2.0或OpenID等授权协议...