设为首页 加入收藏

TOP

使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server(四)
2017-10-10 11:49:46 】 浏览:10208
Tags:使用 OAuth2-Server-php Yii 架上 搭建 OAuth2 Server
---------'
     +---------+       (w/ Optional Refresh Token)

    注:说明步骤(A)、(B)和(C)的直线因为通过用户代理而被分为两部分。
    图1:授权码流程

    在图1中所示的流程包括以下步骤:

    (A)客户端通过向授权端点引导资源所有者的用户代理开始流程。客户端包括它的客户端标识、请求范围、本地状态和重定向URI,一旦访问被许可(或拒绝)授权服务器将传送用户代理回到该URI。
    (B)授权服务器验证资源拥有者的身份(通过用户代理),并确定资源所有者是否授予或拒绝客户端的访问请求。
    (C)假设资源所有者许可访问,授权服务器使用之前(在请求时或客户端注册时)提供的重定向URI重定向用户代理回到客户端。重定向URI包括授权码和之前客户端提供的任何本地状态。
    (D)客户端通过包含上一步中收到的授权码从授权服务器的令牌端点请求访问令牌。当发起请求时,客户端与授权服务器进行身份验证。客户端包含用于获得授权码的重定向URI来用于验证。
    (E)授权服务器对客户端进行身份验证,验证授权代码,并确保接收的重定向URI与在步骤(C)中用于重定向客户端的URI相匹配。如果通过,授权服务器响应返回访问令牌与可选的刷新令牌。

    过程实现:
    1.    client app 使用 app id 获取 authorization code:

    www.yii.com/oauth2/index.php?r=oauth2/authroize&response_type=code&client_id=testclient&state=xyz

    返回:$authcode = authorization code.
    Tips:     authorization code will expired in 30s,可以修改 OAuth2/ResponseType/AuthorizationCode.php 中的 AuthorizationCode class 的构造方法配置参数来自定义 authorization_code 有效时间。
    client_id 是之前注册在本 Server 上的应用名称,这属于客户端管理范畴。 
    这一步需要进行用户(资源所有者)登录 OAuth2 Server 来完成授权操作。用户登录属用户管理范畴,不属 OAuth2 Server 中应编写的功能。
    用户登录后可选择自己可以向 client app 开放的操作(授权)。
    这一步绑定过程中,从安全角度来考虑应强制用户重新输入用户名密码确认绑定,不要直接读取当前用户session进行绑定。 

    2. 获取 access_token:
       client app 使用 authorization code 换取 access_token

       curl -u testclient:testpass www.yii.com/oauth2/index.php?r=oauth2/token -d "grant_type=authorization_code&code=$authcode

       返回:
        成功:
        {"access_token":"aea4a1059d3194a3dd5e4117bedd6e07ccc3f402",
         "expires_in":3600,
         "token_type":"bearer",
         "scope":null,
         "refresh_token":"269a623f54171e8598b1852eefcf115f4882b820"
        }

        失败:
        {"error":"invalid_grant",
         "error_description":"Authorization code doesn't exist or is invalid for the client"
        }

    Tip: 本步骤需要使用客户端的 client_id 和 client_secret 以及上一步获取的 authorization_code 换取 access_code.
         access_tokne 有效期为 3600s, refresh_token 有效期为 1209600s,可以在 OAuth2/ResponseType/AccessToken.php 中的 AccessToken class 中的构造函数配置中进行修改。
    
   

第二种认证方式: Implicit (隐式认证)
    
    隐式授权类型被用于获取访问令牌(它不支持发行刷新令牌),并对知道操作
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/11/11
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇PHP多台服务器跨域SESSION共享 下一篇微信浏览器判断

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目