Pour envoyer des requêtes à OSS via le SDK PHP, vous devez configurer des identifiants d'accès. Les services Alibaba Cloud utilisent ces identifiants pour vérifier votre identité et vos autorisations d'accès. Vous pouvez choisir parmi différents types d'identifiants en fonction de vos besoins en matière d'authentification et d'autorisation. Cette rubrique explique comment configurer des identifiants d'accès temporaires et à long terme.
Prérequis
Avant de configurer les identifiants d'accès, vous devez installer le SDK PHP pour OSS. Pour plus d'informations, consultez la section Installation (SDK PHP V1).
Initialiser un fournisseur d'identifiants
Choisir un fournisseur d'identifiants
OSS prend en charge plusieurs méthodes pour initialiser un fournisseur d'identifiants. Choisissez une méthode adaptée aux exigences d'authentification et d'autorisation de votre scénario.
|
Méthode d'initialisation |
Scénario |
Nécessite un AccessKey ou un jeton STS existant |
Identifiant sous-jacent |
Durée de validité de l'identifiant |
Méthode de rotation ou d'actualisation de l'identifiant |
|
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 identifiants. |
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 identifiants 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 identifiants d'accès depuis un système externe. |
Non |
Jeton STS |
Temporaire |
Actualisation automatique |
|
|
Si les méthodes précédentes ne répondent pas à vos besoins, vous pouvez définir une méthode personnalisée pour obtenir des identifiants. |
Personnalisé |
Personnalisé |
Personnalisé |
Personnalisé |
Méthode 1 : Utiliser une paire 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 identifiants, vous pouvez initialiser le fournisseur d'identifiants à l'aide d'une paire AccessKey provenant d'un compte Alibaba Cloud ou d'un utilisateur Resource Access Management (RAM). Une paire AccessKey se compose d'un AccessKey ID et d'un AccessKey Secret. Cette méthode exige que vous gériez manuellement la paire AccessKey, ce qui peut accroître les risques de sécurité et la complexité de maintenance. Pour plus d'informations, consultez la section CreateAccessKey - Créer une paire 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. Si la paire AccessKey d'un compte Alibaba Cloud est divulguée, cela constitue une menace critique pour la sécurité. Nous vous recommandons d'utiliser la paire AccessKey d'un utilisateur RAM disposant des autorisations minimales requises.
-
Utilisez une paire AccessKey pour définir les variables d'environnement.
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; }
Identifiants statiques
Vous pouvez utiliser des variables dans votre code pour référencer les identifiants. Au moment de l'exécution, ces variables reçoivent les valeurs réelles des identifiants provenant des variables d'environnement, des fichiers de configuration ou d'autres sources de données externes.
Les étapes suivantes présentent 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, vous pouvez initialiser le fournisseur d'identifiants à l'aide d'identifiants d'identité temporaires issus du Security Token Service (STS). Ces identifiants incluent un AccessKey ID, un AccessKey Secret et un jeton de sécurité. Cette méthode exige que vous gériez manuellement le jeton STS, ce qui peut accroître les risques de sécurité et la complexité de maintenance. Pour accéder à OSS plusieurs fois, vous devez actualiser manuellement le jeton STS. Pour plus d'informations, consultez la section AssumeRole - Obtenir des identifiants d'identité temporaires pour un rôle RAM.
-
Utilisez des identifiants d'identité temporaires pour définir les variables d'environnement.
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, vous pouvez utiliser RAMRoleARN pour initialiser le fournisseur d'identifiants. Cette méthode utilise un jeton STS comme identifiant sous-jacent. En spécifiant le nom de ressource Alibaba Cloud (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 AccessKey, ce qui peut accroître les risques de sécurité et la complexité de maintenance. Pour savoir comment obtenir une paire AccessKey, consultez la section CreateAccessKey - Créer une paire AccessKey pour un utilisateur RAM. Pour savoir comment obtenir un RAMRoleARN, consultez la section CreateRole - Créer un rôle RAM.
-
Ajoutez la dépendance du client d'identifiants.
composer require alibabacloud/credentials -
Configurez les identifiants 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, vous pouvez utiliser ECSRAMRole pour initialiser le fournisseur d'identifiants. Cette méthode utilise un jeton STS comme identifiant sous-jacent. 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 gestion manuelle d'une paire AccessKey ou d'un jeton STS. Pour savoir comment obtenir un ECSRAMRole, consultez la section CreateRole - Créer un rôle RAM.
-
Ajoutez la dépendance du client d'identifiants.
composer require alibabacloud/credentials -
Configurez ECSRAMRole comme identifiant 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 identifiants du contexte Function Compute
Si la fonction de votre application s'exécute dans Function Compute, vous pouvez utiliser les identifiants présents dans le contexte de la fonction pour initialiser le fournisseur d'identifiants. Cette méthode utilise un jeton STS comme identifiant sous-jacent. Function Compute obtient un jeton STS en endossant un rôle de service basé sur la configuration de la fonction. Le jeton STS est ensuite transmis à votre application via le paramètre Credentials dans le 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 vous n'avez pas besoin de l'actualiser. Cette méthode élimine les risques associés à la gestion manuelle d'une paire AccessKey ou d'un jeton STS. Pour savoir comment accorder à Function Compute les autorisations nécessaires pour accéder à OSS, consultez la section Utiliser un rôle de fonction pour accorder à Function Compute des autorisations d'accès à d'autres services Alibaba Cloud.
-
Initialisez le fournisseur d'identifiants à l'aide des identifiants 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 présentes 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, vous pouvez utiliser la fonctionnalité RAM Roles for Service Account (RRSA). Cette méthode utilise un jeton STS comme identifiant sous-jacent. 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 gestion manuelle d'une paire AccessKey ou d'un jeton STS. Pour plus d'informations, consultez la section Isolation des autorisations des pods basée sur RRSA.
-
Ajoutez la dépendance du client d'identifiants.
composer require alibabacloud/credentials -
L'exemple de code suivant montre comment configurer le rôle RAM d'un fournisseur OIDC comme identifiant 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 identifiants Alibaba Cloud depuis un système externe pour une gestion flexible des identifiants et un accès sans clé, vous pouvez utiliser CredentialsURI pour initialiser le fournisseur d'identifiants. Cette méthode utilise un jeton STS comme identifiant sous-jacent. L'outil Credentials obtient un jeton STS depuis l'URI que vous fournissez pour initialiser le client d'identifiants. Cette méthode élimine les risques associés à la gestion manuelle d'une paire AccessKey ou d'un jeton STS. Le service backend qui fournit la réponse CredentialsURI doit implémenter la logique d'actualisation automatique du jeton STS. Cela garantit que votre application dispose toujours d'un identifiant valide.
-
Ajoutez la dépendance du client d'identifiants.
composer require alibabacloud/credentials -
L'exemple de code suivant montre comment configurer CredentialsURI comme identifiant 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 identifiants d'accès personnalisés
Si aucune des méthodes précédentes ne répond à vos besoins, vous pouvez définir un fournisseur d'identifiants 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'identifiants initialisé, vous pouvez l'utiliser pour créer une instance OSSClient. Pour plus d'informations, consultez la section Initialisation (SDK PHP V1).