`

OAuth2.0授权学习—2,账号密码授权

阅读更多

对于没有服务端的第三方应用,使用账号密码授权也是一种方式(不过需要基于用户对这个应用足够信任的前提)

 

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的应用场景——第三方登录 在日常生活中,我们经常...

    oauth2.0第三方 qq、sina、baidu、renren、osc、豆瓣 等,登陆的简易封装!

    OAuth2.0是一种开放标准,用于授权第三方应用访问用户存储在另一服务提供商的数据,而无需共享用户的用户名和密码。在Web应用开发中,OAuth2.0常被用来实现社交网络平台(如QQ、新浪、百度、人人网、OSC开源中国、...

    oauth2.0 原理讲解

    OAuth2.0是互联网上的一种授权协议,全称为“The OAuth 2.0 Authorization Framework”,由互联网工程任务组(IETF)标准化,在RFC 6749中进行了定义。该协议主要用来允许一个第三方应用,如应用程序(App)、网站或...

    API接口设计 OAuth2.0认证

    OAuth2.0允许第三方应用在用户许可的情况下访问其存储在特定服务提供商(如Google、Facebook)上的信息,而无需获取用户的账号密码。 OAuth2.0的基本流程包括四个角色:资源所有者(Resource Owner)、客户端...

    基于ThinkPHP3.2.3的微信OAuth2.0微信网页授权

    在OAuth2.0授权流程中,ThinkPHP3.2.3可以用来处理请求、响应以及数据处理。 3. **微信开放平台**:微信提供了丰富的API接口,允许开发者构建与微信相关的服务。其中,微信OAuth2.0网页授权是用于获取用户基本信息...

    开放_OAuth2.0_cn

    OAuth 2.0 是一个授权框架,用于允许第三方应用安全地访问用户在另一服务上的资源,而无需共享用户的登录凭证。这个协议广泛应用于社交...理解并正确实施OAuth 2.0授权协议对于开发健壮的、用户友好的应用至关重要。

    新浪微博OAuth2.0登录

    在IT行业中,OAuth2.0是一种广泛使用的授权框架,它允许第三方应用安全地访问用户的受保护资源,而无需获取用户的用户名和密码。本教程将详细阐述如何使用C#语言和MVC框架实现新浪微博的OAuth2.0登录流程。 首先,...

    OAuth2.0安全案例回顾

    OAuth2.0作为一种开放标准协议,其设计初衷是为了允许用户授权一个应用程序访问他们存储在另一个服务上的信息,而无需分享自己的凭证。这种机制使得数据和服务能够在不同的应用程序之间无缝流动,同时也保障了用户...

    Android版新浪微博API(OAuth2.0授权)

    本文将深入探讨如何在Android平台上使用新浪提供的API,特别是基于OAuth2.0授权机制的Android版新浪微博API。这个API允许开发者构建应用程序,与微博用户进行互动,包括发布和获取微博信息、管理用户关注关系、获取...

    QQ OAuth2.0授权登录JS版

    QQ OAuth2.0授权登录JS版是腾讯提供的一种基于OAuth2.0协议的网页应用登录解决方案,它允许第三方网站或应用通过用户授权获取QQ账号的相关信息,为用户提供一键登录的功能。这种方式大大简化了用户在不同平台注册和...

    【第三方开放平台系列】腾讯微博Oauth2.0授权认证-源码

    腾讯微博作为中国知名的社交媒体平台,也提供了类似的开放平台,允许开发者利用Oauth2.0授权协议来实现用户身份验证和数据获取。本文将深入讲解腾讯微博Oauth2.0授权认证的原理及其在易语言中的实现。 OAuth2.0是一...

    Java的oauth2.0 服务端与客户端的实现

    OAuth 2.0 是一个授权框架,用于安全地允许第三方应用访问用户在原服务提供商上的资源,而无需获取用户的账号密码。在Java中实现OAuth 2.0涉及到服务端(Authorization Server)和客户端(Resource Owner or Client...

    php qq oauth2.0 实例

    OAuth2.0是一种授权协议,允许第三方应用在用户授权后获取访问特定资源的权限,而无需获取用户的用户名和密码。QQ OAuth2.0是腾讯提供的服务,允许开发者在自己的应用中集成QQ登录,提升用户体验。 首先,理解OAuth...

    帝国cms oauth2.0 单点登录sso

    - 配置帝国CMS作为认证服务器,支持OAuth2.0授权流程。 - 设计并实现了一个接口,允许其他应用与帝国CMS进行交互,获取和验证令牌。 - 创建或更新帝国CMS用户账户系统,以便与OAuth2.0的身份验证信息对应。 - 实现了...

    QQ登陆 OAuth2.0 PHP代码

    1. **OAuth2.0协议**:OAuth2.0是一种授权框架,用于允许第三方应用在用户不分享用户名和密码的情况下,访问用户的受保护资源。它分为四个角色:资源所有者(用户)、资源服务器(QQ服务器)、客户端(你的PHP应用)...

    oauth2.0 access_token资源认证

    Oracle数据库通常有自己的安全机制,如用户账号、密码,但在OAuth2.0的场景下,这些传统凭证会被access_token替代。客户端持有access_token,可以对数据库进行限定范围内的操作,而无需直接知道用户的数据库登录凭据...

    小米oauth2.0java实现以及第三方云接入

    在IT行业中,OAuth2.0是一种广泛使用的授权框架,它允许第三方应用安全地访问用户的受保护资源,而无需获取用户的用户名和密码。本教程将详细讲解如何使用Java实现小米的OAuth2.0流程,并实现与第三方云服务的对接。...

    微信OAuth2.0.rar

    通过学习和理解这些代码,开发者可以了解到如何在自己的网页或微信小程序中集成微信的OAuth2.0授权和“扫一扫”功能,从而提升用户体验,同时确保数据的安全性。这包括了前端的用户交互设计,后端的接口处理,以及...

    sina weibo oauth2.0 java 使用示例

    在本文中,我们将深入探讨如何在Java环境中使用OAuth2.0授权框架与新浪Weibo API进行集成。Sina Weibo OAuth2.0是新浪提供的安全认证机制,它允许开发者通过用户的授权来访问其微博数据,而无需直接获取用户的登录...

Global site tag (gtag.js) - Google Analytics