Build a key based authentication system using JWT token for accessing the api functionality. code example
Example: json token for .ini file
private $config;
private static $instance;
private static function getInstance() {
if(is_null(self::$instance)){
self::$instance = new DSConfig();
}
return self::$instance;
}
public function __construct() {
date_default_timezone_set('UTC');
$clientId = getenv("DS_CLIENT_ID");
if (!is_null($clientId) and !empty($clientId)) {
$this->config["DS_CLIENT_ID"] = $clientId;
$this->config["DS_AUTH_SERVER"] = getenv("DS_AUTH_SERVER");
$this->config["DS_IMPERSONATED_USER_GUID"] = getenv("DS_IMPERSONATED_USER_GUID");
$this->config["DS_TARGET_ACCOUNT_ID"] = getenv("DS_TARGET_ACCOUNT_ID");
$this->config["SIGNER_EMAIL"] = getenv("SIGNER_EMAIL");
$this->config["SIGNER_NAME"] = getenv("SIGNER_NAME");
$this->config["CC_EMAIL"] = getenv("CC_EMAIL");
$this->config["CC_NAME"] = getenv("CC_NAME");
$this->config["DS_PRIVATE_KEY"] = getenv("DS_PRIVATE_KEY");
} else {
$this->config = parse_ini_file('ds_config.ini', true);
}
}
private function _auth_server() {
return $this->config["DS_AUTH_SERVER"];
}
public static function auth_server() {
return self::getInstance()->_auth_server();
}
private function _client_id() {
return $this->config["DS_CLIENT_ID"];
}
public static function client_id() {
return self::getInstance()->_client_id();
}
private function _impersonated_user_guid() {
return $this->config["DS_IMPERSONATED_USER_GUID"];
}
public static function impersonated_user_guid() {
return self::getInstance()->_impersonated_user_guid();
}
private function _target_account_id() {
return $this->config["DS_TARGET_ACCOUNT_ID"];
}
public static function target_account_id(){
return self::getInstance()->_target_account_id();
}
private function _signer_email() {
return $this->config["SIGNER_EMAIL"];
}
public static function signer_email(){
return self::getInstance()->_signer_email();
}
private function _signer_name(){
return $this->config["SIGNER_NAME"];
}
public static function signer_name(){
return self::getInstance()->_signer_name();
}
private function _cc_email() {
return $this->config["CC_EMAIL"];
}
public static function cc_email(){
return self::getInstance()->_cc_email();
}
private function _cc_name(){
return $this->config["CC_NAME"];
}
public static function cc_name(){
return self::getInstance()->_cc_name();
}
private function _private_key() {
return $this->config["DS_PRIVATE_KEY"];
}
public static function private_key(){
return self::getInstance()->_private_key();
}
public static function aud() {
$auth_server = self::getInstance()->_auth_server();
if (strpos($auth_server, 'https://') !== false) {
$aud = substr($auth_server, 8);
} else { # assuming http://blah
$aud = substr($auth_server, 7);
}
return $aud;
}
public static function api() {
return "restapi/v2";
}
public static function jwt_scope() {
return "signature";
}