Tous les produits
Search
Centre de documentation

Object Storage Service:Configure access credentials (iOS SDK)

Dernière mise à jour :Aug 18, 2026

Pour envoyer des requêtes avec le SDK OSS pour iOS, 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 selon vos exigences en matière d'authentification et d'autorisation.

Prérequis

Avant de configurer les identifiants d'accès, installez le SDK OSS pour iOS. Pour plus d'informations, consultez la rubrique Installation.

Initialiser le fournisseur d'identifiants

Sélectionner un fournisseur d'identifiants

OSS prend en charge plusieurs méthodes d'initialisation d'un fournisseur d'identifiants. Choisissez celle qui correspond aux exigences d'authentification et d'autorisation de votre scénario.

Méthode d'initialisation

Scénario

Paire AccessKey ou jeton STS requis au préalable

Identifiant sous-jacent

Durée de validité de l'identifiant

Méthode de rotation ou d'actualisation de l'identifiant

Méthode 1 : Utiliser une paire AccessKey

Pour les applications exécutées dans un environnement sécurisé qui nécessitent un accès à long terme aux services cloud sans rotation fréquente des identifiants.

Oui

Clé d'accès

Long terme

Rotation manuelle

Méthode 2 : Utiliser un jeton STS

Pour les applications exécutées dans un environnement non fiable où vous souhaitez contrôler la durée de validité et les autorisations des identifiants.

Oui

Jeton STS

Temporaire

Personnalisé

Méthode 3 : Utiliser CredentialsURI

Pour les applications qui doivent obtenir des identifiants d'accès depuis un système externe.

Non

Jeton STS

Temporaire

Actualisation automatique

Méthode 1 : Utiliser une paire AccessKey

Si votre application nécessite un accès à long terme à OSS, est déployée dans un environnement sécurisé et stable, et ne peut pas prendre en charge une rotation fréquente des identifiants, utilisez une paire AccessKey de votre compte Alibaba Cloud ou d'un utilisateur RAM (Resource Access Management) pour initialiser le fournisseur d'identifiants. Une paire AccessKey se compose d'un AccessKey ID et d'un AccessKey Secret. Toutefois, cette méthode exige une gestion manuelle de la paire AccessKey, ce qui augmente les risques de sécurité et la complexité de maintenance. Pour savoir comment obtenir une paire AccessKey, consultez la rubrique CreateAccessKey.

Avertissement

Exemple de code

NSString *ak = @"<ALIBABA_CLOUD_ACCESS_KEY_ID>";
NSString *sk = @"<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";

id<OSSCredentialProvider> credentialProvider = [[OSSPlainTextAKSKPairCredentialProvider alloc] initWithPlainTextAccessKey:ak secretKey:sk];

Méthode 2 : Utiliser un jeton STS

Si votre application nécessite un accès temporaire à OSS et que vous souhaitez mettre en œuvre un contrôle d'accès granulaire et ajuster les autorisations en temps réel pour améliorer la sécurité et la flexibilité, utilisez des identifiants d'identité temporaires du service STS (Security Token Service) pour initialiser le fournisseur d'identifiants. Ces identifiants incluent un AccessKey ID, un AccessKey Secret et un jeton STS. Toutefois, cette méthode exige une gestion manuelle du jeton STS, ce qui augmente les risques de sécurité et la complexité de maintenance. Pour savoir comment obtenir un jeton STS, consultez la rubrique AssumeRole.

Spécifiez une paire AccessKey et un jeton STS dans votre code pour référencer les identifiants. Les exemples suivants montrent comment mettre à jour le jeton STS.

Mettre à jour manuellement le jeton STS

NSString *ak = @"<ALIBABA_CLOUD_ACCESS_KEY_ID>";
NSString *sk = @"<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
NSString *token = @"<ALIBABA_CLOUD_SECURITY_TOKEN>";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:ak
                                                                                              secretKeyId:sk
                                                                                            securityToken:token];

Mettre à jour automatiquement le jeton STS

id<OSSCredentialProvider> credentialProvider = [[OSSFederationCredentialProvider alloc] initWithFederationTokenGetter:^OSSFederationToken * _Nullable{
    // Obtain the AccessKey ID, AccessKey secret, STS token, and expiration time.

    /* The following example shows how to obtain the AccessKey ID, AccessKey secret, STS token, and expiration time from an application server:
    // Construct a request to access your application server.
    NSURL * url = [NSURL URLWithString:@"http://localhost:8080/distribute-token.json"];
    // Use the request to set the parameters required by your server.
    NSURLRequest * request = [NSURLRequest requestWithURL:url];
    OSSTaskCompletionSource * tcs = [OSSTaskCompletionSource taskCompletionSource];
    NSURLSession * session = [NSURLSession sharedSession];
    // Send the request.
    NSURLSessionTask * sessionTask = [session dataTaskWithRequest:request
                                                completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        if (error) {
            [tcs setError:error];
            return;
        }
        [tcs setResult:data];
    }];
    [sessionTask resume];
    // Block the thread and wait for the response.
    [tcs.task waitUntilFinished];
    // Parse the result.
    if (tcs.task.error) {
        NSLog(@"get token error: %@", tcs.task.error);
        return nil;
    } else {
        // The returned data is in JSON format. Parse the data to obtain the fields of the token.
        NSDictionary * object = [NSJSONSerialization JSONObjectWithData:tcs.task.result
                                                                options:kNilOptions
                                                                  error:nil];
        NSString *ak = [object objectForKey:@"AccessKeyId"];
        NSString *sk = [object objectForKey:@"AccessKeySecret"];
        NSString *token = [object objectForKey:@"SecurityToken"];
        NSString *expiration = [object objectForKey:@"Expiration"];
     
        OSSFederationToken * federationToken = [OSSFederationToken new];
        federationToken.tAccessKey = ak;
        federationToken.tSecretKey = sk;
        federationToken.tToken = token;
        federationToken.expirationTimeInGMTFormat = expiration;
        NSLog(@"get token: %@", federationToken);
        return federationToken;
    }
    */

    NSString *ak = @"<ALIBABA_CLOUD_ACCESS_KEY_ID>";
    NSString *sk = @"<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
    NSString *token = @"<ALIBABA_CLOUD_SECURITY_TOKEN>";
    NSString *expiration = @"<EXPIRATION>";

    OSSFederationToken * federationToken = [OSSFederationToken new];
    federationToken.tAccessKey = ak;
    federationToken.tSecretKey = sk;
    federationToken.tToken = token;
    federationToken.expirationTimeInGMTFormat = expiration;

    return federationToken;
}];

Méthode 3 : Utiliser CredentialsURI

Si votre application doit obtenir et actualiser automatiquement les identifiants Alibaba Cloud depuis un système externe ou une configuration personnalisée pour une gestion flexible des identifiants et un accès sans clé, utilisez CredentialsURI pour initialiser le fournisseur d'identifiants. Cette méthode utilise un jeton STS comme identifiant sous-jacent. L'outil Credentials obtient le jeton STS à partir de l'URI que vous fournissez pour initialiser le client. Cette méthode ne nécessite pas de fournir de paire AccessKey ni de jeton STS, ce qui élimine les risques liés à la maintenance manuelle.

  1. Pour permettre à l'outil Credentials d'analyser et d'utiliser correctement le jeton STS, l'URI doit renvoyer une réponse conforme à ce protocole :

    • Code d'état de la réponse : 200

    • Structure du corps de la réponse :

      {
        "StatusCode":200,
        "AccessKeyId":"AccessKeyId",
        "AccessKeySecret":"AccessKeySecret",
        "Expiration":"2015-11-03T09:52:59Z",
        "SecurityToken":"SecurityToken"
      }                    
  2. Configurez l'identifiant URI comme identifiant d'accès.

    NSString *authServerUrl = @"<authServerUrl>";
    id<OSSCredentialProvider> credentialProvider = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:authServerUrl];
  3. Si les données sont chiffrées, utilisez la méthode suivante pour les déchiffrer.

    NSString *authServerUrl = @"<authServerUrl>";
    id<OSSCredentialProvider> credentialProvider = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:authServerUrl responseDecoder:^NSData * _Nullable(NSData * _Nonnull data) {
        NSData *result = nil;
        // Decrypt the data.
        // result = ...
        return result;
    }];