TOP

使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server(一)
2017-10-10 11:49:46 】 瀏覽:10426
Tags:

原文轉自 http://www.cnblogs.com/ldms/p/4565547.html

 

Yii 有很多 extension 可以使用优乐棋牌app下载,在查看了 Yii 官網上提供的與 OAuth 相關的擴展后,發現了幾個 OAuth2 的客戶端擴展,但是并沒有找到可以作為 OAuth2 Server 的擴展。因為 Yii 是組織良好的易于擴展的框架优乐棋牌app下载,所以完全可以集成其它的 PHP OAuth2 Server 實現方案。在 OAuth.net/2/ 官網上,提供了幾個 PHP 實現的 OAuth2 Server。這里使用第一個 OAuth2-Server-php 來作為 Yii 框架的 OAuth2 Server 擴展,需要進行一些必要的整合操作,主要是編寫一個類來接受 client 訪問和頒發 access_token 等。

第一部分: 數據庫準備

    OAuth2-Server-php  使用的數據庫結構采用 Github 上的 oauth2-server-php README.md 提供的表結構(Schema),一共有五張表:

    mysql> show tables;
    +--------------------------+
    | Tables_in_oauth2         |
    +--------------------------+
    | oauth_access_token       |
    | oauth_authorization_code |
    | oauth_client             |
    | oauth_refresh_token      |
    | user                     |
    +--------------------------+
    5 rows in set (0.00 sec)
    
    各表的名字說明了表中存取的內容,表名可自定義,自定義位置為:OAuth2/Storage/Pdo.php 48行的 config 數組中,因為這里采用的是 mysql 數據庫,所以需要修改的是 Pdo,若是采用其它的存儲方案,如 Redis,則自行修改對應文件即可。注意這里的數據庫名稱是都是單數形式。

    使用以下 sql 語句創建這5個表,并添加一個測試 client:
    ###############################
    ### oauth2 tables
    ###############################
    drop table if exists `oauth_client`;
    drop table if exists `oauth_access_token`;
    drop table if exists `oauth_authorization_code`;
    drop table if exists `oauth_refresh_token`;
    drop table if exists `user`;

    CREATE TABLE `oauth_client` (
    `client_id` VARCHAR(80) NOT NULL, 
    `client_secret` VARCHAR(80) NOT NULL, 
    `redirect_uri` VARCHAR(2000) NOT NULL, 
    CONSTRAINT client_id_pk PRIMARY KEY (client_id)
    );

    CREATE TABLE `oauth_access_token` (
    `access_token` VARCHAR(40) NOT NULL, 
    `client_id` VARCHAR(80) NOT NULL, 
    `user_id` VARCHAR(255), 
    `expires` TIMESTAMP NOT NULL, 
    `scope` VARCHAR(2000), 
    CONSTRAINT access_token_pk PRIMARY KEY (access_token)
    );

    CREATE TABLE `oauth_authorization_code` (
    `authorization_code` VARCHAR(40) NOT NULL, 
    `client_id` VARCHAR(80) NOT NULL, 
    `user_id` VARCHAR(255), 
    `redirect_uri` VARCHAR(2000), 
    `expires` TIMESTAMP NOT NULL, 
    `scope` VARCHAR(2000), 
    CONSTRAINT auth_code_pk PRIMARY KEY (authorization_code)
    );

    CREATE TABLE `oauth_refresh_token` (
 &nbs

請關注公眾號獲取更多資料



首頁 上一頁 1 2 3 4 5 6 7 下一頁 尾頁 1/11/11
】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇PHP多臺服務器跨域SESSION共享 下一篇微信瀏覽器判斷