Pour envoyer des requêtes à OSS via le SDK PHP, vous devez configurer des informations d'identification d'accès. Les services Alibaba Cloud utilisent ces identifiants pour vérifier votre identité et vos autorisations d'accès. Selon vos besoins en matière d'authentification et d'autorisation, plusieurs types d'informations d'identification sont disponibles. Cette rubrique explique comment configurer des informations d'identification temporaires et permanentes.
Prérequis
Avant de configurer les informations d'identification d'accès, installez le SDK PHP pour OSS. Pour plus d'informations, consultez la rubrique Installation (PHP SDK V1).
Initialiser un fournisseur d'informations d'identification
Choisir un fournisseur d'informations d'identification
OSS prend en charge plusieurs méthodes d'initialisation d'un fournisseur d'informations d'identification. Sélectionnez la méthode adaptée aux exigences d'authentification et d'autorisation de votre scénario.
|
Méthode d'initialisation |
Scénario |
Nécessite une clé AccessKey ou un jeton STS existant |
Informations d'identification sous-jacentes |
Durée de validité des informations d'identification |
Méthode de rotation ou d'actualisation des informations d'identification |
|
Applications s'exécutant dans un environnement sécurisé et nécessitant un accès à long terme aux services Alibaba Cloud sans rotation fréquente des informations d'identification. |
Oui |
AccessKey |
Long terme |
Rotation manuelle |
|
|
Applications s'exécutant dans un environnement non fiable où vous devez contrôler la durée de validité et les autorisations d'accès. |
Oui |
Jeton STS |
Temporaire |
Actualisation manuelle |
|
|
Applications nécessitant un accès autorisé aux services Alibaba Cloud, par exemple pour un accès intercomptes. |
Oui |
Jeton STS |
Temporaire |
Actualisation automatique |
|
|
Applications s'exécutant sur des instances ECS, des instances ECI ou des nœuds de travail Container Service for Kubernetes. |
Non |
Jeton STS |
Temporaire |
Actualisation automatique |
|
|
Méthode 5 : Utiliser les informations d'identification du contexte Function Compute |
Fonctions d'applications s'exécutant dans Alibaba Cloud Function Compute. |
Non |
Jeton STS |
Temporaire |
Aucune actualisation nécessaire |
|
Applications non fiables s'exécutant sur des nœuds de travail Container Service for Kubernetes. |
Non |
Jeton STS |
Temporaire |
Actualisation automatique |
|
|
Applications devant obtenir des informations d'identification d'accès depuis un système externe. |
Non |
Jeton STS |
Temporaire |
Actualisation automatique |
|
|
Méthode 8 : Utiliser des informations d'identification personnalisées |
Si les méthodes précédentes ne répondent pas à vos besoins, définissez une méthode personnalisée pour obtenir les informations d'identification. |
Personnalisé |
Personnalisé |
Personnalisé |
Personnalisé |
Méthode 1 : Utiliser une paire de clés AccessKey
Si votre application s'exécute dans un environnement sécurisé et nécessite un accès à long terme à OSS sans rotation fréquente des informations d'identification, initialisez le fournisseur d'informations d'identification à l'aide d'une paire de clés AccessKey issue d'un compte Alibaba Cloud ou d'un utilisateur Resource Access Management (RAM). Une paire de clés AccessKey se compose d'un AccessKey ID et d'un AccessKey Secret. Cette méthode exige une maintenance manuelle de la paire de clés, ce qui peut accroître les risques de sécurité et la complexité de gestion. Pour plus d'informations, consultez la rubrique CreateAccessKey - Créer une paire de clés AccessKey pour un compte Alibaba Cloud ou un utilisateur RAM.
Variables d'environnement
Un compte Alibaba Cloud dispose de toutes les autorisations sur ses ressources. La divulgation de la paire de clés AccessKey d'un compte Alibaba Cloud constitue une menace critique pour la sécurité. Nous vous recommandons d'utiliser la paire de clés AccessKey d'un utilisateur RAM disposant uniquement des autorisations minimales requises.
-
Définissez les variables d'environnement à l'aide d'une paire de clés AccessKey.
Mac OS X/Linux/Unix
export OSS_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> export OSS_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>Windows
set OSS_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> set OSS_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET> -
Transmettez les informations d'identification à l'aide des variables d'environnement.
<?php require_once __DIR__ . '/vendor/autoload.php'; use OSS\Credentials\EnvironmentVariableCredentialsProvider; use OSS\OssClient; use OSS\Core\OssException; try { // Get access credentials from environment variables and save them in the provider. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. $provider = new EnvironmentVariableCredentialsProvider(); // Set Endpoint to the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set Endpoint to https://oss-cn-hangzhou.aliyuncs.com. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; $bucket = "bucket"; $config = array( "provider" => $provider, "endpoint" => $endpoint, "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { printf($e->getMessage() . "\n"); return; }
Informations d'identification statiques
Utilisez des variables dans votre code pour référencer les informations d'identification. À l'exécution, ces variables reçoivent les valeurs réelles des informations d'identification provenant de variables d'environnement, de fichiers de configuration ou d'autres sources de données externes.
Les étapes suivantes illustrent un exemple utilisant un fichier de configuration.
-
Créez un fichier de configuration nommé
config.ini.[credentials] alibaba_cloud_access_key_id = <ALIBABA_CLOUD_ACCESS_KEY_ID> alibaba_cloud_access_key_secret = <ALIBABA_CLOUD_ACCESS_KEY_SECRET> -
Transmettez les informations d'identification à l'aide du fichier de configuration.
<?php if (is_file(__DIR__ . '/../autoload.php')) { require_once __DIR__ . '/../autoload.php'; } if (is_file(__DIR__ . '/../vendor/autoload.php')) { require_once __DIR__ . '/../vendor/autoload.php'; } use OSS\Credentials\StaticCredentialsProvider; use OSS\OssClient; use OSS\Core\OssException; try { $config = parse_ini_file('config.ini'); // Get the AccessKey ID and AccessKey secret. $accessKeyId = $config['alibaba_cloud_access_key_id']; $accessKeySecret = $config['alibaba_cloud_access_key_secret']; $provider = new StaticCredentialsProvider($accessKeyId,$accessKeySecret); $endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; $config = array( "provider" => $provider, "endpoint" => $endpoint, "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); printf($ossClient); } catch (OssException $e) { printf($e->getMessage() . "\n"); return; }
Méthode 2 : Utiliser un jeton STS
Si votre application nécessite un accès temporaire à OSS, initialisez le fournisseur d'informations d'identification à l'aide d'identifiants temporaires issus du Security Token Service (STS). Ces identifiants comprennent un AccessKey ID, un AccessKey Secret et un jeton de sécurité. Cette méthode exige une maintenance manuelle du jeton STS, ce qui peut accroître les risques de sécurité et la complexité de gestion. Pour accéder plusieurs fois à OSS, vous devez actualiser manuellement le jeton STS. Pour plus d'informations, consultez la rubrique AssumeRole - Obtenir des identifiants temporaires pour un rôle RAM.
-
Définissez les variables d'environnement à l'aide d'identifiants temporaires.
Mac OS X/Linux/Unix
export OSS_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> export OSS_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET> export OSS_SESSION_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN>Windows
set OSS_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> set OSS_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET> set OSS_SESSION_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN> -
Transmettez les informations d'identification à l'aide des variables d'environnement.
<?php require_once __DIR__ . '/vendor/autoload.php'; use OSS\Credentials\EnvironmentVariableCredentialsProvider; use OSS\OssClient; use OSS\Core\OssException; try { // Get access credentials from environment variables and save them in the provider. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, and OSS_SESSION_TOKEN environment variables are set. $provider = new EnvironmentVariableCredentialsProvider(); // Set Endpoint to the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set Endpoint to https://oss-cn-hangzhou.aliyuncs.com. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; $bucket = "bucket"; $config = array( "provider" => $provider, "endpoint" => $endpoint, "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { printf($e->getMessage() . "\n"); return; }
Méthode 3 : Utiliser RAMRoleARN
Cette méthode nécessite alibabacloud/credentials version 1.2.0 ou ultérieure.
Si votre application nécessite une autorisation pour accéder à OSS, par exemple pour un accès intercomptes, utilisez RAMRoleARN pour initialiser le fournisseur d'informations d'identification. Cette méthode utilise un jeton STS comme information d'identification sous-jacente. En spécifiant l'Alibaba Cloud Resource Name (ARN) d'un rôle RAM, l'outil Credentials récupère un jeton STS auprès de STS et l'actualise automatiquement avant son expiration. Vous pouvez également attribuer une valeur au paramètre policy afin de restreindre le rôle RAM à un ensemble d'autorisations plus limité. Cette méthode exige que vous fournissiez une paire de clés AccessKey, ce qui peut accroître les risques de sécurité et la complexité de gestion. Pour savoir comment obtenir une paire de clés AccessKey, consultez la rubrique CreateAccessKey - Créer une paire de clés AccessKey pour un utilisateur RAM. Pour savoir comment obtenir un RAMRoleARN, consultez la rubrique CreateRole - Créer un rôle RAM.
-
Ajoutez la dépendance du client d'informations d'identification.
composer require alibabacloud/credentials -
Configurez les informations d'identification d'accès.
<?php require_once __DIR__ . '/vendor/autoload.php'; use AlibabaCloud\Credentials\Credential; use OSS\Core\OssException; use OSS\OssClient; use OSS\Credentials\CredentialsProvider; use OSS\Credentials\StaticCredentialsProvider; class AlibabaCloudCredentialsWrapper implements CredentialsProvider { /** * @var Credential */ private $wrapper; public function __construct($wrapper) { $this->wrapper = $wrapper; } public function getCredentials() { $cred = $this->wrapper->getCredential(); $ak = $cred->getAccessKeyId(); $sk = $cred->getAccessKeySecret(); $token = $cred->getSecurityToken(); return new StaticCredentialsProvider($ak, $sk, $token); } } try { $config = new Credential\Config([ // The credential type. Set the value to ram_role_arn. 'type' => 'ram_role_arn', // Get the AccessKey pair (AccessKey ID and AccessKey secret) of the RAM user from environment variables. 'accessKeyId' => getenv('OSS_ACCESS_KEY_ID'), 'accessKeySecret' => getenv('OSS_ACCESS_KEY_SECRET'), // Get the ARN of the RAM role from the environment variable. This is the ID of the role to assume, in the format acs:ram::$accountID:role/$roleName. 'roleArn' => getenv('OSS_STS_ROLE_ARN'), // A custom role session name to distinguish different tokens. 'roleSessionName' => 'yourRoleSessionName', // A custom access policy. 'policy' => '', ]); $credential = new Credential($config); $providerWrapper = new AlibabaCloudCredentialsWrapper($credential); $provider = $providerWrapper->getCredentials(); $config = array( 'provider' => $provider, // For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. For other regions, use the actual endpoint. 'endpoint' => 'https://oss-cn-hangzhou.aliyuncs.com' "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { print $e->getMessage(); }
Méthode 4 : Utiliser ECSRAMRole
Cette méthode nécessite alibabacloud/credentials version 1.2.0 ou ultérieure.
Si votre application s'exécute sur une instance ECS, une instance ECI ou un nœud de travail Container Service for Kubernetes, utilisez ECSRAMRole pour initialiser le fournisseur d'informations d'identification. Cette méthode utilise un jeton STS comme information d'identification sous-jacente. ECSRAMRole vous permet d'attacher un rôle RAM à une instance ECS, une instance ECI ou un nœud de travail Container Service for Kubernetes afin d'actualiser automatiquement le jeton STS sur l'instance. Cette méthode élimine les risques associés à la maintenance manuelle d'une paire de clés AccessKey ou d'un jeton STS. Pour savoir comment obtenir un ECSRAMRole, consultez la rubrique CreateRole - Créer un rôle RAM.
-
Ajoutez la dépendance du client d'informations d'identification.
composer require alibabacloud/credentials -
Configurez ECSRAMRole comme information d'identification d'accès.
<?php require_once __DIR__ . '/vendor/autoload.php'; use AlibabaCloud\Credentials\Credential; use OSS\Core\OssException; use OSS\OssClient; use OSS\Credentials\CredentialsProvider; use OSS\Credentials\StaticCredentialsProvider; class AlibabaCloudCredentialsWrapper implements CredentialsProvider { /** * @var Credential */ private $wrapper; public function __construct($wrapper) { $this->wrapper = $wrapper; } public function getCredentials() { $cred = $this->wrapper->getCredential(); $ak = $cred->getAccessKeyId(); $sk = $cred->getAccessKeySecret(); $token = $cred->getSecurityToken(); return new StaticCredentialsProvider($ak, $sk, $token); } } try { $config = new Credential\Config([ // The credential type. Set the value to ecs_ram_role. 'type' => 'ecs_ram_role', 'roleName' => "<role_name>", ]); $credential = new Credential($config); $providerWrapper = new AlibabaCloudCredentialsWrapper($credential); $provider = $providerWrapper->getCredentials(); $config = array( 'provider' => $provider, // For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. For other regions, use the actual endpoint. 'endpoint' => 'https://oss-cn-hangzhou.aliyuncs.com' "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { print $e->getMessage(); }
Méthode 5 : Utiliser les informations d'identification du contexte Function Compute
Si la fonction de votre application s'exécute dans Function Compute, utilisez les informations d'identification présentes dans le contexte de la fonction pour initialiser le fournisseur d'informations d'identification. Cette méthode utilise un jeton STS comme information d'identification sous-jacente. Function Compute obtient un jeton STS en endossant un rôle de service selon la configuration de la fonction. Le jeton STS est ensuite transmis à votre application via le paramètre Credentials du contexte. Le jeton STS est valide pendant 36 heures et cette durée ne peut pas être modifiée. La durée d'exécution maximale d'une fonction étant de 24 heures, le jeton STS n'expire pas pendant l'exécution de la fonction et aucune actualisation n'est nécessaire. Cette méthode élimine les risques associés à la maintenance manuelle d'une paire de clés AccessKey ou d'un jeton STS. Pour savoir comment accorder à Function Compute les autorisations d'accès à OSS, consultez la rubrique Utiliser un rôle de fonction pour accorder à Function Compute des autorisations d'accès à d'autres services Alibaba Cloud.
-
Initialisez le fournisseur d'informations d'identification à l'aide des informations d'identification du contexte Function Compute.
<?php use OSS\OssClient; use OSS\Core\OssException; function handler($event, $context) { /* An AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user for API access or routine O&M. Do not hard-code your AccessKey ID and AccessKey secret in your project code. Otherwise, the AccessKey pair may be leaked and the security of all your resources may be compromised. This example shows how to get the AccessKey ID and AccessKey secret from the context. */ $creds = $context["credentials"]; $accessKeyId = $creds["accessKeyId"]; $accessKeySecret = $creds["accessKeySecret"]; $securityToken = $creds["securityToken"]; $endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com"; try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken); print_r($ossClient); } catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return $e->getMessage(); } return 'hello world'; }
Méthode 6 : Utiliser OIDCRoleARN
Cette méthode nécessite alibabacloud/credentials version 1.2.0 ou ultérieure.
Après avoir configuré un rôle RAM pour un nœud de travail Container Service for Kubernetes, les applications exécutées dans les pods de ce nœud peuvent obtenir le jeton STS du rôle associé depuis le serveur de métadonnées. Ce fonctionnement est similaire à celui des applications sur une instance ECS. Toutefois, si des applications non fiables sont déployées sur le cluster, vous souhaiterez peut-être éviter qu'elles obtiennent le jeton STS du rôle RAM de l'instance depuis le serveur de métadonnées. C'est le cas, par exemple, d'une application soumise par votre client dont le code ne vous est pas accessible. Pour protéger vos ressources cloud et permettre à ces applications non fiables d'obtenir en toute sécurité les jetons STS requis avec des autorisations minimales, utilisez la fonctionnalité RAM Roles for Service Account (RRSA). Cette méthode utilise un jeton STS comme information d'identification sous-jacente. Un cluster de conteneurs Alibaba Cloud crée et monte le fichier de jeton OpenID Connect (OIDC) du compte de service correspondant pour chaque pod d'application. Il injecte également les informations de configuration dans des variables d'environnement. L'outil Credentials récupère la configuration depuis les variables d'environnement et appelle l'opération AssumeRoleWithOIDC de STS pour échanger le jeton OIDC contre un jeton STS du rôle lié. Cette méthode élimine les risques associés à la maintenance manuelle d'une paire de clés AccessKey ou d'un jeton STS. Pour plus d'informations, consultez la rubrique Isolation des autorisations des pods basée sur RRSA.
-
Ajoutez la dépendance du client d'informations d'identification.
composer require alibabacloud/credentials -
L'exemple de code suivant montre comment configurer le rôle RAM d'un fournisseur OIDC comme information d'identification d'accès.
<?php require_once __DIR__ . '/vendor/autoload.php'; use OSS\Credentials\CredentialsProvider; use AlibabaCloud\Credentials\Credential; use OSS\Credentials\StaticCredentialsProvider; use OSS\Core\OssException; use OSS\OssClient; class AlibabaCloudCredentialsWrapper implements CredentialsProvider { /** * @var Credential */ private $wrapper; public function __construct($wrapper) { $this->wrapper = $wrapper; } public function getCredentials() { $cred = $this->wrapper->getCredential(); $ak = $cred->getAccessKeyId(); $sk = $cred->getAccessKeySecret(); $token = $cred->getSecurityToken(); return new StaticCredentialsProvider($ak, $sk, $token); } } try { // Initialize the Credentials Client using OIDCRoleArn. $config = new Credential\Config([ // The credential type. 'type' => 'oidc_role_arn', // The ARN of the OIDC provider. You can set oidc_provider_arn using the ALIBABA_CLOUD_OIDC_PROVIDER_ARN environment variable. 'oidcProviderArn' => '<OidcProviderArn>', // The path of the OIDC token file. You can set oidc_token_file_path using the ALIBABA_CLOUD_OIDC_TOKEN_FILE environment variable. 'oidcTokenFilePath' => '<OidcTokenFilePath>', // The ARN of the RAM role. Example: acs:ram::123456789012****:role/adminrole. You can set role_arn using the ALIBABA_CLOUD_ROLE_ARN environment variable. 'roleArn' => '<RoleArn>', // The role session name. You can set role_session_name using the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable. 'roleSessionName' => '<RoleSessionName>', // Optional. A smaller access policy. Example: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} 'policy' => '<Policy>', # Set the session expiration time. 'durationSeconds' => 3600, ]); $credential = new Credential($config); $providerWrapper = new AlibabaCloudCredentialsWrapper($credential); $provider = $providerWrapper->getCredentials(); $config = array( 'provider' => $provider, // For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. For other regions, use the actual endpoint. 'endpoint' => 'https://oss-cn-hangzhou.aliyuncs.com' "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { print $e->getMessage(); }
Méthode 7 : Utiliser CredentialsURI
Cette méthode nécessite alibabacloud/credentials version 1.2.0 ou ultérieure.
Si votre application doit obtenir des informations d'identification Alibaba Cloud depuis un système externe pour une gestion flexible des informations d'identification et un accès sans clé, utilisez CredentialsURI pour initialiser le fournisseur d'informations d'identification. Cette méthode utilise un jeton STS comme information d'identification sous-jacente. L'outil Credentials obtient un jeton STS depuis l'URI que vous fournissez pour initialiser le client d'informations d'identification. Cette méthode élimine les risques associés à la maintenance manuelle d'une paire de clés AccessKey ou d'un jeton STS. Le service backend fournissant la réponse CredentialsURI doit implémenter la logique d'actualisation automatique du jeton STS. Cela garantit que votre application dispose toujours d'informations d'identification valides.
-
Ajoutez la dépendance du client d'informations d'identification.
composer require alibabacloud/credentials -
L'exemple de code suivant montre comment configurer CredentialsURI comme information d'identification d'accès.
<?php require_once __DIR__ . '/vendor/autoload.php'; use AlibabaCloud\Credentials\Credential; use OSS\Core\OssException; use OSS\Credentials\CredentialsProvider; use OSS\Credentials\StaticCredentialsProvider; use OSS\OssClient; class AlibabaCloudCredentialsWrapper implements CredentialsProvider { /** * @var Credential */ private $wrapper; public function __construct($wrapper) { $this->wrapper = $wrapper; } public function getCredentials() { $cred = $this->wrapper->getCredential(); $ak = $cred->getAccessKeyId(); $sk = $cred->getAccessKeySecret(); $token = $cred->getSecurityToken(); return new StaticCredentialsProvider($ak, $sk, $token); } } try { $config = new Credential\Config([ // The credential type. 'type' => 'credentials_uri', // The URI of the credential, in the format http://local_or_remote_uri/. You can set credentials_uri using the ALIBABA_CLOUD_CREDENTIALS_URI environment variable. 'credentialsURI' => '<CredentialsUri>', ]); $credential = new Credential($config); $providerWrapper = new AlibabaCloudCredentialsWrapper($credential); $provider = $providerWrapper->getCredentials(); $config = array( 'provider' => $provider, // For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. For other regions, use the actual endpoint. 'endpoint' => 'https://oss-cn-hangzhou.aliyuncs.com' "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { print $e->getMessage(); }
Méthode 8 : Utiliser des informations d'identification d'accès personnalisées
Si aucune des méthodes précédentes ne répond à vos besoins, définissez un fournisseur d'informations d'identification personnalisé en implémentant l'interface Credential Providers.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\CredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;
class CustomerCredentialsProvider implements CredentialsProvider
{
public function getCredentials()
{
// Return long-term credentials.
return [
'AccessKeyId' => 'id',
'AccessKeySecret' => 'secret',
];
// Return temporary credentials.
//return [
// 'AccessKeyId' => 'id',
// 'AccessKeySecret' => 'secret',
// 'SecurityToken' => 'token',
//];
}
}
$provider = new CustomerCredentialsProvider();
try {
$provider = new CustomerCredentialsProvider();
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
printf($ossClient);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}
Étapes suivantes
Une fois le fournisseur d'informations d'identification initialisé, utilisez-le pour créer une instance OSSClient. Pour plus d'informations, consultez la rubrique Initialisation (PHP SDK V1).