php 操作kong&oauth2.0插件

<?php
/**
 * Created by PhpStorm.
 * User: he
 * Date: 17-10-31
 * Time: 上午10:36
 */


/*
 * =====================================================================================================================
 */


// 添加API
//print_r(add_api());
/*
    {
        "created_at":1509416106000,
        "strip_uri":true,
        "id":"55b0dfb4-813e-4262-9498-ebd555266a80",
        "hosts":[
            "test.my"
        ],
        "name":"test-api",
        "http_if_terminated":false,
        "preserve_host":false,
        "upstream_url":"http://test.my",
        "upstream_connect_timeout":60000,
        "upstream_send_timeout":60000,
        "upstream_read_timeout":60000,
        "retries":5,
        "https_only":false
    }
 */

// 關聯oauth插件
//print_r(relate_oauth());
/*
    {
        "created_at":1509416153000,
        "config":{
            "token_expiration":7200,
            "mandatory_scope":true,
            "hide_credentials":false,
            "enable_authorization_code":true,
            "enable_implicit_grant":false,
            "global_credentials":false,
            "scopes":[
                "email",
                "sms"
            ],
            "enable_password_grant":false,
            "accept_http_if_already_terminated":false,
            "anonymous":"",
            "enable_client_credentials":false,
            "provision_key":"64UKJL1Ypk29Gtxrgg1laX9biHibb9Mq"
        },
        "id":"1453ce8e-f303-45fa-af27-bb68806492e4",
        "name":"oauth2",
        "api_id":"55b0dfb4-813e-4262-9498-ebd555266a80",
        "enabled":true
    }
 */

// 添加消費者
//print_r(add_consumer());
/*
    {
        "created_at":1509416185000,
        "username":"test",
        "id":"09e2fb41-eed5-4b72-bff8-57c6d4cdf0c9"
    }
 */

// 創建應用
//print_r(create_app());
/*
    {
        "client_id":"QJD043ipB43NdWsqrbkLiV4WWgkLaAt7",
        "created_at":1509416415000,
        "id":"d5c355e1-09a8-414a-a479-74243d1d5a77",
        "redirect_uri":[
            "http://test.my/"
        ],
        "name":"test",
        "client_secret":"GAxHK4g1JxM6IsGPIbsQqxjCPyVbwP3U",
        "consumer_id":"09e2fb41-eed5-4b72-bff8-57c6d4cdf0c9"
    }
 */

// 模擬授權
// 獲取code
//print_r(
//    code('QJD043ipB43NdWsqrbkLiV4WWgkLaAt7', '64UKJL1Ypk29Gtxrgg1laX9biHibb9Mq',
//    'email', 'test.my'
//    )
//);
/*
    {
        "redirect_uri":"http://test.my/?code=3H95cXeHorfdgnaonDgolttnLaUL9R52"
    }
 */

// 獲取token
//print_r(
//    token(
//    'QJD043ipB43NdWsqrbkLiV4WWgkLaAt7', 'GAxHK4g1JxM6IsGPIbsQqxjCPyVbwP3U',
//    '64UKJL1Ypk29Gtxrgg1laX9biHibb9Mq', '3H95cXeHorfdgnaonDgolttnLaUL9R52', 'test.my'
//    )
//);
/*
    {
        "refresh_token":"cG5zAnffPSaj9DvsnOFy7n3fNTMSe6ZA",
        "token_type":"bearer",
        "access_token":"ZXddR46nj4M4ByO4wtLbxOb0B3sEbS6z",
        "expires_in":7200
    }
 */

// 驗證token
//print_r(
//    get_api(
//    'ZXddR46nj4M4ByO4wtLbxOb0B3sEbS6z', 'test.my'
//    )
//);

// 刷新token
//print_r(
//    refresh_token(
//        'cG5zAnffPSaj9DvsnOFy7n3fNTMSe6ZA', 'QJD043ipB43NdWsqrbkLiV4WWgkLaAt7',
//        'GAxHK4g1JxM6IsGPIbsQqxjCPyVbwP3U', 'test.my'
//    )
//);
/*
    {
        "refresh_token":"25M8vwezfE0HbgEFPBv90WA64HHBXtC8",
        "token_type":"bearer",
        "access_token":"KRLlDFPM76spsNOchuxxpq97lkURwu34",
        "expires_in":7200
    }
 */


/*
 * =====================================================================================================================
 */


function add_api()
{
    // 添加API
    $api_data = ['name' => 'test-api', 'hosts' => 'test.my', 'upstream_url' => 'http://test.my'];
    $curl = curl_init('http://localhost:8001/apis/');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($curl, CURLOPT_POSTFIELDS, $api_data);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}


function relate_oauth()
{
    // 關聯oauth
    $api_data = [
        'name' => 'oauth2',
        'config.enable_authorization_code' => 'true',
        'config.scopes' => 'email,sms',
        'config.mandatory_scope' => 'true'
    ];
    $curl = curl_init('http://localhost:8001/apis/test-api/plugins');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($curl, CURLOPT_POSTFIELDS, $api_data);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}


function add_consumer()
{
    // 添加消費者
    $api_data = ['username' => 'test'];
    $curl = curl_init('http://localhost:8001/consumers/');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($curl, CURLOPT_POSTFIELDS, $api_data);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}


function create_app()
{
    // 創建應用
    $api_data = ['name' => 'test', 'redirect_uri' => 'http://test.my/'];
    $curl = curl_init('http://localhost:8001/consumers/test/oauth2');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($curl, CURLOPT_POSTFIELDS, $api_data);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}


function code($client_id, $provision_key, $scope, $host)
{
    // 獲取code
    $post_data = [
        'client_id' => $client_id,
        'response_type' => 'code',
        'provision_key' => $provision_key,
        'authenticated_userid' => 0,
        'scope' => $scope
    ];
    $curl = curl_init('https://localhost:8443/oauth2/authorize');
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
    curl_setopt($curl,CURLOPT_HTTPHEADER,[sprintf("Host:%s",$host)]);
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($curl,CURLOPT_POST,true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}


function token($client_id, $client_secret, $provision_key, $code, $host)
{
    // 獲取Token
    $post_data = [
        'client_id' => $client_id,
        'client_secret' => $client_secret,
        'provision_key' => $provision_key,
        'code' => $code,
        'grant_type' => 'authorization_code'
    ];
    $curl = curl_init('https://localhost:8443/oauth2/token');
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
    curl_setopt($curl,CURLOPT_HTTPHEADER,[sprintf("Host:%s",$host)]);
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($curl,CURLOPT_POST,true);
    curl_setopt($curl,CURLOPT_POSTFIELDS, $post_data);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}


function get_api($token, $host)
{
    // 獲取API
    $post_data = [
        'access_token' => $token,
    ];
    $curl = curl_init('https://localhost:8443');
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
    curl_setopt($curl,CURLOPT_HTTPHEADER,[sprintf("Host:%s",$host)]);
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($curl,CURLOPT_POST,true);
    curl_setopt($curl,CURLOPT_POSTFIELDS, $post_data);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}


function refresh_token($refresh_token, $client_id, $client_secret, $host)
{
    //刷新Token
    $post_data = [
        'refresh_token' => $refresh_token,
        'client_id' => $client_id,
        'client_secret' => $client_secret,
        'grant_type' => 'refresh_token'
    ];
    $curl = curl_init('https://localhost:8443/oauth2/token');
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
    curl_setopt($curl,CURLOPT_HTTPHEADER,[sprintf("Host:%s",$host)]);
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($curl,CURLOPT_POST,true);
    curl_setopt($curl,CURLOPT_POSTFIELDS, $post_data);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}

文章來源:http://blog.csdn.net/qq_26656329/article/details/78400704

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章