对于没有服务端的第三方应用,使用账号密码授权也是一种方式(不过需要基于用户对这个应用足够信任的前提)
1,申请Client ID(填写应用ID号和密码,这里不需要填写回调网址)
访问
http://localhost/oauth/server/examples/mongo/addclient.php
填写ID=50001,Secret=pwd提交,查询数据库如下
> db.clients.find()
{ "_id" : "50001", "pw" : "pwd", "redirect_uri" : "" }
2,直接使用用户账号,密码获取access token
发起请求如下
http://localhost/oauth/server/examples/mongo/token.php?
client_id=50001&
client_secret=pwd&
grant_type=password&
username=ciaos&
password=ciaospwd
返回
{
"access_token":"1efd8b9a68de73934d9dd9218fff899f",
"expires_in":3600,
"scope":null
}
查询数据库如下
> db.tokens.find()
{ "_id" : "1efd8b9a68de73934d9dd9218fff899f", "client_id" : "50001", "expires" : 1352693889, "scope" : null }
当然服务器端需要支持这种授权机制,我们需要在MongoOAuth中重载OAuth2这个类的相关函数如下:
/**
* Overrides OAuth2::getSupportedGrantTypes().
*/
protected function getSupportedGrantTypes() {
return array(
OAUTH2_GRANT_TYPE_AUTH_CODE,
OAUTH2_GRANT_TYPE_USER_CREDENTIALS
);
}
以及判断用户账号密码的逻辑
/**
* Implements OAuth2::checkClientCredentials().
*
*/
protected function checkUserCredentials($client_id, $username, $password) {
//check whether account information is correct
if(!($username == "ciaos" && $password == "ciaospwd")){
return false;
}
//check whether it's a valid client
$client = $this->db->clients->findOne(array("_id" => $client_id));
return $client !== NULL;
}
这样我们就可以用第二步获取到的access token直接访问受限资源了,访问方法和网站授权一样,不再介绍。
分享到:
相关推荐
OAuth2.0协议的核心在于实现了一个安全的三方授权流程,允许第三方应用在获取用户明确授权的情况下访问用户存储在资源服务器上的受保护资源。 #### 二、OAuth2.0的应用场景——第三方登录 在日常生活中,我们经常...
OAuth2.0是一种开放标准,用于授权第三方应用访问用户存储在另一服务提供商的数据,而无需共享用户的用户名和密码。在Web应用开发中,OAuth2.0常被用来实现社交网络平台(如QQ、新浪、百度、人人网、OSC开源中国、...
OAuth2.0是互联网上的一种授权协议,全称为“The OAuth 2.0 Authorization Framework”,由互联网工程任务组(IETF)标准化,在RFC 6749中进行了定义。该协议主要用来允许一个第三方应用,如应用程序(App)、网站或...
OAuth2.0允许第三方应用在用户许可的情况下访问其存储在特定服务提供商(如Google、Facebook)上的信息,而无需获取用户的账号密码。 OAuth2.0的基本流程包括四个角色:资源所有者(Resource Owner)、客户端...
在OAuth2.0授权流程中,ThinkPHP3.2.3可以用来处理请求、响应以及数据处理。 3. **微信开放平台**:微信提供了丰富的API接口,允许开发者构建与微信相关的服务。其中,微信OAuth2.0网页授权是用于获取用户基本信息...
OAuth 2.0 是一个授权框架,用于允许第三方应用安全地访问用户在另一服务上的资源,而无需共享用户的登录凭证。这个协议广泛应用于社交...理解并正确实施OAuth 2.0授权协议对于开发健壮的、用户友好的应用至关重要。
在IT行业中,OAuth2.0是一种广泛使用的授权框架,它允许第三方应用安全地访问用户的受保护资源,而无需获取用户的用户名和密码。本教程将详细阐述如何使用C#语言和MVC框架实现新浪微博的OAuth2.0登录流程。 首先,...
OAuth2.0作为一种开放标准协议,其设计初衷是为了允许用户授权一个应用程序访问他们存储在另一个服务上的信息,而无需分享自己的凭证。这种机制使得数据和服务能够在不同的应用程序之间无缝流动,同时也保障了用户...
本文将深入探讨如何在Android平台上使用新浪提供的API,特别是基于OAuth2.0授权机制的Android版新浪微博API。这个API允许开发者构建应用程序,与微博用户进行互动,包括发布和获取微博信息、管理用户关注关系、获取...
QQ OAuth2.0授权登录JS版是腾讯提供的一种基于OAuth2.0协议的网页应用登录解决方案,它允许第三方网站或应用通过用户授权获取QQ账号的相关信息,为用户提供一键登录的功能。这种方式大大简化了用户在不同平台注册和...
腾讯微博作为中国知名的社交媒体平台,也提供了类似的开放平台,允许开发者利用Oauth2.0授权协议来实现用户身份验证和数据获取。本文将深入讲解腾讯微博Oauth2.0授权认证的原理及其在易语言中的实现。 OAuth2.0是一...
OAuth 2.0 是一个授权框架,用于安全地允许第三方应用访问用户在原服务提供商上的资源,而无需获取用户的账号密码。在Java中实现OAuth 2.0涉及到服务端(Authorization Server)和客户端(Resource Owner or Client...
OAuth2.0是一种授权协议,允许第三方应用在用户授权后获取访问特定资源的权限,而无需获取用户的用户名和密码。QQ OAuth2.0是腾讯提供的服务,允许开发者在自己的应用中集成QQ登录,提升用户体验。 首先,理解OAuth...
- 配置帝国CMS作为认证服务器,支持OAuth2.0授权流程。 - 设计并实现了一个接口,允许其他应用与帝国CMS进行交互,获取和验证令牌。 - 创建或更新帝国CMS用户账户系统,以便与OAuth2.0的身份验证信息对应。 - 实现了...
1. **OAuth2.0协议**:OAuth2.0是一种授权框架,用于允许第三方应用在用户不分享用户名和密码的情况下,访问用户的受保护资源。它分为四个角色:资源所有者(用户)、资源服务器(QQ服务器)、客户端(你的PHP应用)...
Oracle数据库通常有自己的安全机制,如用户账号、密码,但在OAuth2.0的场景下,这些传统凭证会被access_token替代。客户端持有access_token,可以对数据库进行限定范围内的操作,而无需直接知道用户的数据库登录凭据...
在IT行业中,OAuth2.0是一种广泛使用的授权框架,它允许第三方应用安全地访问用户的受保护资源,而无需获取用户的用户名和密码。本教程将详细讲解如何使用Java实现小米的OAuth2.0流程,并实现与第三方云服务的对接。...
通过学习和理解这些代码,开发者可以了解到如何在自己的网页或微信小程序中集成微信的OAuth2.0授权和“扫一扫”功能,从而提升用户体验,同时确保数据的安全性。这包括了前端的用户交互设计,后端的接口处理,以及...
在本文中,我们将深入探讨如何在Java环境中使用OAuth2.0授权框架与新浪Weibo API进行集成。Sina Weibo OAuth2.0是新浪提供的安全认证机制,它允许开发者通过用户的授权来访问其微博数据,而无需直接获取用户的登录...