gluufederation/oxd-php-api

使用 oxd 保护您的应用程序,通过 OpenID Connect 和 UMA 实现单点登录和 API 访问管理。

此包的官方仓库似乎已丢失,因此已将其冻结。

3.1.2 2018-03-15 14:34 UTC

README

oxd-php 是 Gluu oxd 服务器的客户端库。

安装

来源

oxd-php 的源代码可在 Github 上找到

Composer: oxd-php-api

这是首选方法。如果您尚未安装,请访问 composer 网站,查看 安装说明

要在项目中安装 oxd-php-api,请在项目根目录中执行以下命令

$ composer install `composer require "gluufederation/oxd-php-api": "3.0.1"`

注意:OpenID Connect 需要 https。如果您的网站只使用 http,则此库将无法工作。

配置

oxd-php 的配置文件位于 'oxd-rp-settings.json'。这里列出的值在注册时使用。有关支持的完整 oxd 配置参数列表,请参阅 oxd 文档。以下是一个典型的注册配置数据集

{
    "oxd_host_port":8099,
    "authorization_redirect_uri" : ["https://www.myapplication.com/welcome" ],
    "post_logout_redirect_uri" : "https://www.myapplication.com/logout",
    "scope" : ["openid", "profile"],
    "acr_values" : ["u2f"]
}
                        
  • oxd_host_port - oxd 端口或套接字

API 描述

通过 class Client_Socket_OXD_RP 连接到 oxd 服务器

Client_Socket_OXD_RP.php

Client_Socket_OXD_RP 类是连接到 oxd 服务器的基类。它包含所有用于注册的参数,并保存到 Oxd_RP_config 类的静态值中。

Oxd_RP_config.php

class Oxd_RP_config
{
    public static $op_host;
    public static $oxd_host_port;
    public static $authorization_redirect_uri;
    public static $post_logout_redirect_uri;
    public static $scope;
    public static $application_type;
    public static $response_types;
    public static $grant_types;
    public static $acr_values;
}
                        

Client_OXD_RP.php 是所有类继承的基类。

Client_OXD_RP.php

Client_OXD_RP 类是一个抽象类,它扩展了 Client_Socket_OXD_RP 类。

Register_site.php

示例

Register_site_test:

session_start();
session_destroy();
include_once '../Register_site.php';

$register_site = new Register_site();
$register_site->setRequestOpHost(Oxd_RP_config::$op_host);
$register_site->setRequestAcrValues(Oxd_RP_config::$acr_values);
$register_site->setRequestAuthorizationRedirectUri(Oxd_RP_config::$authorization_redirect_uri);
$register_site->setRequestPostLogoutRedirectUri(Oxd_RP_config::$post_logout_redirect_uri);
$register_site->setRequestContacts(["test@test.test"]);
$register_site->setRequestGrantTypes(Oxd_RP_config::$grant_types);
$register_site->setRequestResponseTypes(Oxd_RP_config::$response_types);
$register_site->setRequestScope(Oxd_RP_config::$scope);

$register_site->request();
$_SESSION['oxd_id'] = $register_site->getResponseOxdId();

print_r($register_site->getResponseObject());

                        

Update_site_registration.php

示例

Update_site_registration_test:

session_start();
include_once '../Update_site_registration.php';

$update_site_registration = new Update_site_registration();

$update_site_registration->setRequestAcrValues(Oxd_RP_config::$acr_values);
$update_site_registration->setRequestOxdId($_SESSION['oxd_id']);
$update_site_registration->setRequestAuthorizationRedirectUri(Oxd_RP_config::$authorization_redirect_uri);
$update_site_registration->setRequestPostLogoutRedirectUri(Oxd_RP_config::$post_logout_redirect_uri);
$update_site_registration->setRequestContacts(["test@test.test"]);
$update_site_registration->setRequestGrantTypes(Oxd_RP_config::$grant_types);
$update_site_registration->setRequestResponseTypes(Oxd_RP_config::$response_types);
$update_site_registration->setRequestScope(Oxd_RP_config::$scope);

$update_site_registration->request();

print_r($update_site_registration->getResponseObject());

                        

Get_authorization_url.php

示例

Get_authorization_url_test:
session_start();
require_once '../Get_authorization_url.php';

$get_authorization_url = new Get_authorization_url();
$get_authorization_url->setRequestOxdId($_SESSION['oxd_id']);
$get_authorization_url->setRequestAcrValues(Oxd_RP_config::$acr_values);

$get_authorization_url->request();

echo $get_authorization_url->getResponseAuthorizationUrl();
                        

Get_tokens_by_code.php

示例

Get_tokens_by_code_test:
session_start();
require_once '../Get_tokens_by_code.php';

$get_tokens_by_code = new Get_tokens_by_code();

$get_tokens_by_code->setRequestOxdId($_SESSION['oxd_id']);

//getting code from redirecting url, when user allowed.
$get_tokens_by_code->setRequestCode($_GET['code']);
$get_tokens_by_code->setRequestState($_GET['state']);
$get_tokens_by_code->setRequestScopes($_GET['scope']);

$get_tokens_by_code->request();
$_SESSION['id_token'] = $get_tokens_by_code->getResponseIdToken();
$_SESSION['access_token'] = $get_tokens_by_code->getResponseAccessToken();
print_r($get_tokens_by_code->getResponseObject());

Get_user_info.php

示例

Get_user_info_test:

session_start();
require_once '../Get_user_info.php';
echo '<br/>Get_user_info <br/>';
$get_user_info = new Get_user_info();
$get_user_info->setRequestOxdId($_SESSION['oxd_id']);
$get_user_info->setRequestAccessToken($_SESSION['access_token']);
$get_user_info->request();
print_r($get_user_info->getResponseObject());
                        

Logout.php

示例

Logout_test:
session_start();
require_once '../Logout.php';

$logout = new Logout();
$logout->setRequestOxdId($_SESSION['oxd_id']);
$logout->setRequestPostLogoutRedirectUri(Oxd_RP_config::$post_logout_redirect_uri);
$logout->setRequestIdToken($_SESSION['user_oxd_access_token']);
$logout->setRequestSessionState($_SESSION['session_states']);
$logout->setRequestState($_SESSION['states']);
$logout->request();

echo $logout->getResponseHtml();
                        

Uma_rs_protect.php

示例

Uma_rs_protect_test:

$uma_rs_protect = new Uma_rs_protect();
$uma_rs_protect->setRequestOxdId($register_site->getResponseOxdId());

$uma_rs_protect->addConditionForPath(["GET"],["http://vlad.umatest.com/dev/actions/view"], ["http://vlad.umatest.com/dev/actions/view"]);
$uma_rs_protect->addConditionForPath(["POST"],[ "http://vlad.umatest.com/dev/actions/add"],[ "http://vlad.umatest.com/dev/actions/add"]);
$uma_rs_protect->addConditionForPath(["DELETE"],["http://vlad.umatest.com/dev/actions/remove"], ["http://vlad.umatest.com/dev/actions/remove"]);
$uma_rs_protect->addResource('/uma/testresource');

$uma_rs_protect->request();
var_dump($uma_rs_protect->getResponseObject());

Uma_rs_check_access.php

示例

Uma_rs_check_access_test:

session_start();
require_once '../Uma_rs_check_access.php';

$uma_rs_authorize_rpt = new Uma_rs_check_access();
$uma_rs_authorize_rpt->setRequestOxdId($_SESSION['oxd_id']);
$uma_rs_authorize_rpt->setRequestRpt($_SESSION['uma_rpt']);
$uma_rs_authorize_rpt->setRequestPath("/uma/testresource");
$uma_rs_authorize_rpt->setRequestHttpMethod("GET");
$uma_rs_authorize_rpt->request();

var_dump($uma_rs_authorize_rpt->getResponseObject());

$_SESSION['uma_ticket'] = $uma_rs_authorize_rpt->getResponseTicket();

Uma_rp_get_rpt.php

示例

Uma_rp_get_rpt_test:

$uma_rp_get_rpt = new Uma_rp_get_rpt();
$uma_rp_get_rpt->0setRequestOxdId($_SESSION['oxd_id']);
$uma_rp_get_rpt->request();

var_dump($uma_rp_get_rpt->getResponseObject());

$_SESSION['uma_rpt']= $uma_rp_get_rpt->getResponseRpt();
echo $uma_rp_get_rpt->getResponseRpt();

Uma_rp_authorize_rpt.php

示例

Uma_rp_authorize_rpt_test:

session_start();
require_once '../Uma_rp_authorize_rpt.php';

$uma_rp_authorize_rpt = new Uma_rp_authorize_rpt();
$uma_rp_authorize_rpt->setRequestOxdId($_SESSION['oxd_id']);
$uma_rp_authorize_rpt->setRequestRpt($_SESSION['uma_rpt']);
$uma_rp_authorize_rpt->setRequestTicket($_SESSION['uma_ticket']);
$uma_rp_authorize_rpt->request();

var_dump($uma_rp_authorize_rpt->getResponseObject());
                        

Uma_rp_get_gat.php

示例

Uma_rp_get_gat_test:

$uma_rp_get_gat = new Uma_rp_get_gat();
$uma_rp_get_gat->setRequestOxdId($_SESSION['oxd_id']);
$uma_rp_get_gat->setRequestScopes(["http://photoz.example.com/dev/actions/add","http://photoz.example.com/dev/actions/view", "http://photoz.example.com/dev/actions/edit"]);
$uma_rp_get_gat->request();

var_dump($uma_rp_get_gat->getResponseObject());

$_SESSION['uma_gat']= $uma_rp_get_gat->getResponseGat();
echo $uma_rp_get_gat->getResponseGat();