Pour envoyer des requêtes à Object Storage Service (OSS) à l'aide du kit de développement logiciel (SDK) C#, 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 fournir ces identifiants de différentes manières, en fonction des exigences d'authentification et d'autorisation de votre scénario.
Notes
Pour plus d'informations sur les régions et les endpoints pris en charge par OSS, consultez la rubrique Régions et endpoints.
Pour créer une paire AccessKey pour un utilisateur Resource Access Management (RAM), consultez la rubrique Créer une paire AccessKey.
Choisir un fournisseur d'identifiants
OSS prend en charge plusieurs méthodes pour initialiser un fournisseur d'identifiants. Choisissez la méthode d'initialisation adaptée à vos besoins en matière d'authentification et d'autorisation.
|
Méthode d'initialisation du fournisseur d'identifiants |
Scénarios |
Nécessite une paire AccessKey ou un jeton Security Token Service (STS) préexistante |
Type d'identifiant sous-jacent |
Validité de l'identifiant |
Méthode de rotation ou d'actualisation de l'identifiant |
|
Applications s'exécutant dans un environnement sécurisé et stable, non vulnérable aux attaques externes. Ces applications nécessitent un accès à long terme aux services Alibaba Cloud sans rotation fréquente des identifiants. |
Oui |
Paire AccessKey |
Long terme |
Rotation manuelle |
|
|
Applications s'exécutant dans un environnement non fiable. Cette méthode vous permet de 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, comme l'accès inter-comptes. |
Oui |
Jeton STS |
Temporaire |
Actualisation automatique |
|
|
Applications s'exécutant sur des instances Elastic Compute Service (ECS), des instances ECI ou des nœuds de travail Container Service for Kubernetes. |
Non |
Jeton STS |
Temporaire |
Actualisation automatique |
|
|
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 aucune des méthodes précédentes ne répond à vos besoins, vous pouvez personnaliser la manière dont vous obtenez les identifiants. |
Personnalisé |
Personnalisé |
Personnalisé |
Personnalisé |
Exemples de configuration courants
Utiliser la clé AK d'un utilisateur RAM
Si votre application est déployée dans un environnement sécurisé et stable, nécessite un accès à long terme à OSS et ne permet pas une rotation fréquente des identifiants, vous pouvez initialiser le fournisseur d'identifiants avec la paire AccessKey (AccessKey ID et AccessKey Secret) d'un compte Alibaba Cloud ou d'un utilisateur RAM. Toutefois, cette méthode exige que vous gériez manuellement une paire AccessKey, ce qui augmente les risques de sécurité et la complexité de maintenance. Pour obtenir une paire AccessKey, consultez la rubrique 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 l'ensemble des ressources. Si une paire AccessKey est divulguée, cela pose des risques de sécurité importants pour votre système. Nous vous déconseillons d'utiliser la paire AccessKey d'un compte Alibaba Cloud. Utilisez plutôt la paire AccessKey d'un utilisateur RAM disposant des autorisations minimales requises.
-
Définissez les variables d'environnement à l'aide d'une paire AccessKey.
Mac OS X, Linux, or Unix
export ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>Windows
set ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> set ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET> -
Transmettez les informations d'identification à l'aide des variables d'environnement.
using Aliyun.OSS; using Aliyun.OSS.Common; using Aliyun.OSS.Common.Authentication; // Obtain access credentials from environment variables. Before you run this code, make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variables are set. var accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"); var accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, "")); // Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; // Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou. const string region = "cn-hangzhou"; var conf = new ClientConfiguration(); var client = new OssClient(endpoint, credentialsProvider, conf); client.SetRegion(region);
Identifiants statiques
L'exemple de code suivant montre comment coder en dur les identifiants d'accès et définir explicitement la paire AccessKey à utiliser.
N'intégrez pas les identifiants d'accès dans les applications en environnement de production. Cette méthode est réservée aux tests.
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;
// Replace the sample values with your actual AccessKey ID and AccessKey secret.
var accessKeyId = "LTAI5tQQx1DWEYK7********" ;
var accessKeySecret = "s5LkMqKmmKbt3zjs7MNJTj********" ;
var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, ""));
// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
const string region = "cn-hangzhou";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);
Utiliser un identifiant d'accès temporaire STS
Si votre application nécessite un accès temporaire à OSS, vous pouvez initialiser le fournisseur d'identifiants avec un identifiant d'identité temporaire (AccessKey ID, AccessKey Secret et jeton de sécurité) obtenu via Security Token Service (STS). Toutefois, cette méthode exige que vous gériez manuellement un jeton STS, ce qui augmente les risques de sécurité et la complexité de maintenance. De plus, pour accéder temporairement à OSS à plusieurs reprises, vous devez actualiser manuellement le jeton STS.
Pour obtenir rapidement un identifiant d'accès temporaire STS en appelant une opération OpenAPI, consultez la rubrique AssumeRole - Obtenir un identifiant d'identité temporaire pour endosser un rôle.
Pour obtenir un identifiant d'accès temporaire STS à l'aide d'un SDK, consultez la rubrique Utiliser un identifiant d'accès temporaire STS pour accéder à OSS.
Vous devez spécifier une date d'expiration lors de la génération d'un jeton STS. Le jeton devient automatiquement invalide après son expiration et ne peut plus être utilisé.
Pour la liste des endpoints STS, consultez la rubrique Endpoints.
Variables d'environnement
-
Définissez les variables d'environnement à l'aide d'un identifiant d'identité temporaire.
Mac OS X, Linux, or Unix
export ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET> export ALIBABA_CLOUD_SECURITY_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.
using Aliyun.OSS; using Aliyun.OSS.Common; using Aliyun.OSS.Common.Authentication; // Obtain access credentials from environment variables. Before you run this code, make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, and ALIBABA_CLOUD_SECURITY_TOKEN environment variables are set. var accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"); var accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); var token = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN"); var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, token)); // Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; // Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou. const string region = "cn-hangzhou"; var conf = new ClientConfiguration(); var client = new OssClient(endpoint, credentialsProvider, conf); client.SetRegion(region);
Identifiants statiques
Vous pouvez coder en dur les identifiants dans votre application pour définir explicitement la paire AccessKey temporaire à utiliser.
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;
// Replace the sample values with your actual temporary AccessKey ID, AccessKey secret, and security token.
var accessKeyId = "STS.NTZdStF79CVRTQuWCfXTT****";
var accessKeySecret = "5rm8PfEiK8enp56zzAMX4RbZUraoKbWXvCf1xAuT****"
var token = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN");
var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, token));
// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
const string region = "cn-hangzhou";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);
Autres exemples de configuration spécifiques aux scénarios
Utiliser RAMRoleARN
Si votre application nécessite un accès autorisé à OSS, tel qu'un accès inter-comptes, vous pouvez initialiser le fournisseur d'identifiants à l'aide d'un RAMRoleARN. 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 d'identifiants récupère un jeton STS auprès du service STS et actualise automatiquement le jeton avant son expiration. Vous pouvez également attribuer une valeur à policy pour restreindre le rôle RAM à un ensemble d'autorisations plus limité.
Un compte Alibaba Cloud dispose de toutes les autorisations sur l'ensemble des ressources. Si une paire AccessKey est divulguée, cela pose des risques de sécurité importants pour votre système. Nous vous déconseillons d'utiliser la paire AccessKey d'un compte Alibaba Cloud. Utilisez plutôt la paire AccessKey d'un utilisateur RAM disposant des autorisations minimales requises.
Pour plus d'informations sur la création d'une paire AccessKey pour un utilisateur RAM, consultez la rubrique Créer une paire AccessKey. L'AccessKey ID et l'AccessKey Secret d'un utilisateur RAM ne sont affichés qu'au moment de leur création. Vous devez les enregistrer immédiatement. Si vous oubliez l'AccessKey Secret, vous devez créer une nouvelle paire AccessKey pour effectuer une rotation.
Pour obtenir un RAMRoleARN, consultez la rubrique CreateRole - Créer un rôle.
Installez la bibliothèque d'identifiants Alibaba Cloud. Pour plus d'informations, consultez la rubrique Gérer les identifiants d'accès.
-
Configurez les identifiants d'accès.
using Aliyun.OSS; using Aliyun.OSS.Common; using Aliyun.OSS.Common.Authentication; class CredentialsProviderWrapper : ICredentialsProvider { private Aliyun.Credentials.Client client; public CredentialsProviderWrapper(Aliyun.Credentials.Client client) { this.client = client; } public ICredentials GetCredentials() { var accessKeyId = client.GetAccessKeyId(); var accessKeySecret = client.GetAccessKeySecret(); var token = client.GetSecurityToken(); return new DefaultCredentials(accessKeyId, accessKeySecret, token); } public void SetCredentials(ICredentials creds) { } }; var config = new Aliyun.Credentials.Models.Config() { Type = "ram_role_arn", AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"), AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // By default, the following operations use parameter values that are directly entered. You can also add environment variables and use Environment.GetEnvironmentVariable("<variable_name>") to get the corresponding parameters. // The ARN of the RAM role to assume. Example: acs:ram::123456789012****:role/adminrole RoleArn = "<RoleArn>", // The default environment variable for RoleArn is ALIBABA_CLOUD_ROLE_ARN. // The role session name. RoleSessionName = "<RoleSessionName>", // The default environment variable for RoleSessionName is ALIBABA_CLOUD_ROLE_SESSION_NAME. }; var credentialsClient = new Aliyun.Credentials.Client(config); var credentialsProvider = new CredentialsProviderWrapper(credentialsClient); // Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; // Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou. const string region = "cn-hangzhou"; var conf = new ClientConfiguration(); var client = new OssClient(endpoint, credentialsProvider, conf); client.SetRegion(region);
Utiliser un rôle RAM ECS
Si votre application s'exécute sur une instance Elastic Compute Service (ECS), une instance Elastic Container Instance (ECI) ou un nœud de travail Container Service for Kubernetes, nous vous recommandons d'utiliser un ECSRAMRole pour initialiser le fournisseur d'identifiants. Cette méthode utilise un jeton STS comme identifiant sous-jacent. Un ECSRAMRole vous permet d'associer un rôle à une instance ECS, une instance ECI ou un nœud de travail Container Service for Kubernetes. Cela permet l'actualisation automatique du jeton STS au sein de l'instance. Cette méthode ne nécessite pas de fournir de paire AccessKey ni de jeton STS, ce qui élimine les risques liés à leur gestion manuelle. Pour obtenir un ECSRAMRole, consultez la rubrique CreateRole - Créer un rôle.
Installez la bibliothèque d'identifiants Alibaba Cloud. Pour plus d'informations, consultez la rubrique Gérer les identifiants d'accès.
Configurez un ECSRAMRole comme identifiant d'accès.
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;
class CredentialsProviderWrapper : ICredentialsProvider
{
private Aliyun.Credentials.Client client;
public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
{
this.client = client;
}
public ICredentials GetCredentials()
{
var accessKeyId = client.GetAccessKeyId();
var accessKeySecret = client.GetAccessKeySecret();
var token = client.GetSecurityToken();
return new DefaultCredentials(accessKeyId, accessKeySecret, token);
}
public void SetCredentials(ICredentials creds)
{
}
};
var config = new Aliyun.Credentials.Models.Config()
{
Type = "ecs_ram_role",
// Optional. The name of the ECS RAM role. If you do not specify this parameter, the role name is automatically obtained. We recommend that you specify this parameter to reduce the number of requests.
RoleName = "<RoleName>"
};
var credentialsClient = new Aliyun.Credentials.Client(config);
var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
const string region = "cn-hangzhou";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);
Utiliser OIDCRoleARN
Après avoir configuré un rôle RAM pour les nœuds de travail dans Container Service for Kubernetes, les applications exécutées dans les pods de ces nœuds peuvent récupérer le jeton STS du rôle associé via le service de métadonnées global, à l'instar des applications déployées sur ECS. Toutefois, si vous déployez des applications non fiables sur le cluster de conteneurs, telles que des applications soumises par vos clients dont le code ne vous est pas visible, vous souhaiterez peut-être éviter qu'elles ne récupèrent le jeton STS du rôle RAM d'instance associé aux nœuds de travail via le service de métadonnées global. Pour prévenir les risques de sécurité pour vos ressources cloud tout en permettant à ces applications non fiables de récupérer en toute sécurité les jetons STS requis et de parvenir à une minimisation des autorisations au niveau de l'application, utilisez la fonctionnalité RAM Roles for Service Accounts (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 différents pods d'application et injecte les informations de configuration pertinentes dans les variables d'environnement. L'outil d'identifiants récupère les informations de 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 ne nécessite pas de fournir de paire AccessKey ni de jeton STS, ce qui élimine les risques liés à leur gestion manuelle. Pour plus d'informations, consultez la rubrique Isoler les autorisations des pods en fonction de RRSA.
Les variables d'environnement suivantes sont injectées :
ALIBABA_CLOUD_ROLE_ARN : l'ARN du rôle RAM.
ALIBABA_CLOUD_OIDC_PROVIDER_ARN : l'ARN du fournisseur OIDC.
ALIBABA_CLOUD_OIDC_TOKEN_FILE : le chemin d'accès au fichier de jeton OIDC.
Configurez un OIDCRoleArn comme identifiant d'accès.
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;
class CredentialsProviderWrapper : ICredentialsProvider
{
private Aliyun.Credentials.Client client;
public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
{
this.client = client;
}
public ICredentials GetCredentials()
{
var accessKeyId = client.GetAccessKeyId();
var accessKeySecret = client.GetAccessKeySecret();
var token = client.GetSecurityToken();
return new DefaultCredentials(accessKeyId, accessKeySecret, token);
}
public void SetCredentials(ICredentials creds)
{}
};
var config = new Aliyun.Credentials.Models.Config()
{
Type = "oidc_role_arn",
// The ARN of the RAM role. You can set RoleArn using the ALIBABA_CLOUD_ROLE_ARN environment variable.
RoleArn = "<RoleArn>",
// The ARN of the OIDC provider. You can set OidcProviderArn using the ALIBABA_CLOUD_OIDC_PROVIDER_ARN environment variable.
OIDCProviderArn = "<OidcProviderArn>",
// The path to the OIDC token file. You can set OidcTokenFilePath using the ALIBABA_CLOUD_OIDC_TOKEN_FILE environment variable.
OIDCTokenFilePath = "<OidcTokenFilePath>",
// The role session name. You can set RoleSessionName using the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
RoleSessionName = "<RoleSessionName>",
// Optional. A more restrictive access policy. Example: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
Policy = "<Policy>",
RoleSessionExpiration = 3600
};
var credentialsClient = new Aliyun.Credentials.Client(config);
var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
const string region = "cn-hangzhou";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);
Utiliser CredentialsURI
Si votre application doit récupérer les identifiants Alibaba Cloud depuis un système externe afin de bénéficier d'une gestion flexible des identifiants et d'un accès sans clé, vous pouvez initialiser le fournisseur d'identifiants à l'aide d'un CredentialsURI. Cette méthode utilise un jeton STS comme identifiant sous-jacent. L'outil d'identifiants récupère un jeton STS depuis l'URI que vous fournissez pour finaliser l'initialisation du client d'identifiants. Cette méthode ne nécessite pas de fournir de paire AccessKey ni de jeton STS, ce qui élimine les risques liés à leur gestion manuelle. Le service backend qui fournit la réponse CredentialsURI doit implémenter une logique d'actualisation automatique du jeton STS afin de garantir que votre application puisse toujours récupérer des identifiants valides.
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;
class CredentialsProviderWrapper : ICredentialsProvider
{
private Aliyun.Credentials.Client client;
public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
{
this.client = client;
}
public ICredentials GetCredentials()
{
var accessKeyId = client.GetAccessKeyId();
var accessKeySecret = client.GetAccessKeySecret();
var token = client.GetSecurityToken();
return new DefaultCredentials(accessKeyId, accessKeySecret, token);
}
public void SetCredentials(ICredentials creds)
{}
};
var config = new Aliyun.Credentials.Models.Config()
{
// The credential type.
Type = "credentials_uri",
// The URI from which to obtain credentials. The format is http://local_or_remote_uri/. You can set CredentialsURI using the ALIBABA_CLOUD_CREDENTIALS_URI environment variable.
CredentialsURI = "<CredentialsURI>"
};
var credentialsClient = new Aliyun.Credentials.Client(config);
var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
const string region = "cn-hangzhou";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);
Utiliser un identifiant d'accès personnalisé
Si aucune des méthodes de configuration précédentes ne répond à vos besoins, vous pouvez également implémenter l'interface Credential Providers pour personnaliser la manière dont les identifiants sont fournis.
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;
class CustomCredentialsProvider : ICredentialsProvider
{
public CustomCredentialsProvider()
{
}
public ICredentials GetCredentials()
{
// TODO
// Custom method to obtain access credentials.
string accessKeyId;
string accessKeySecret;
//string token;
// Return long-term credentials: access_key_id, access_key_secret.
return new DefaultCredentials(accessKeyId, accessKeySecret, "");
// Return temporary credentials: access_key_id, access_key_secret, token.
// For temporary credentials, you must refresh the credentials based on their expiration time.
// return new DefaultCredentials(accessKeyId, accessKeySecret, token);
}
public void SetCredentials(ICredentials creds)
{
}
};
var credentialsProvider = new CustomCredentialsProvider();
// Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to cn-hangzhou.
const string region = "cn-hangzhou";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);