Todos os produtos
Search
Central de documentação

Object Storage Service:Configure access credentials (iOS SDK)

Última atualização: Sep 24, 2026

Para enviar requisições usando o OSS SDK para iOS, configure credenciais de acesso. Os serviços da Alibaba Cloud utilizam credenciais de acesso para verificar sua identidade e permissões de acesso. É possível fornecer credenciais de diversas formas, de acordo com os requisitos de autenticação e autorização do seu cenário.

Pré-requisitos

Antes de configure as credenciais de acesso, instale o OSS SDK para iOS. Para mais informações, consulte Installation.

Inicializar o provedor de credenciais

Selecione um provedor de credenciais

O OSS oferece suporte a múltiplos métodos para inicializar um provedor de credenciais. Escolha o método mais adequado às necessidades de autenticação e autorização do seu cenário.

Método de inicialização

Cenário

Par de AccessKey ou token STS necessário previamente

Credencial subjacente

Validade da credencial

Método de rotação ou atualize de credenciais

Method 1: Use an AccessKey pair

Para aplicações que operam em ambientes seguros e precisam de acesso de longo prazo a serviços cloud sem rotação frequente de credenciais.

Sim

Chave de acesso

Longo prazo

Rotação manual

Method 2: Use an STS token

Para aplicações que operam em ambientes não confiáveis, onde é necessário controlar o período de validade e as permissões das credenciais.

Sim

Token STS

Temporária

Personalizado

Method 3: Use CredentialsURI

Para aplicações que precisam obter credenciais de acesso a partir de um sistema externo.

Não

Token STS

Temporária

Atualização automática

Método 1: Usar um par de AccessKey

Se sua aplicação requer acesso de longo prazo ao OSS, está implantada em um ambiente seguro e estável e não suporta rotação frequente de credenciais, utilize um par de AccessKey da sua conta da Alibaba Cloud ou de um usuário do Resource Access Management (RAM) para inicializar o provedor de credenciais. Um par de AccessKey é composto por um AccessKey ID e um AccessKey secret. No entanto, esse método exige a manutenção manual do par de AccessKey, o que aumenta os riscos de segurança e a complexidade operacional. Para saber como obter um par de AccessKey, consulte CreateAccessKey.

Aviso

Código de exemplo

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

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

Método 2: Usar um token STS

Se sua aplicação precisa de acesso temporário ao OSS e você deseja implementar controle de acesso refinado com ajuste de permissões em tempo real para maior segurança e flexibilidade, utilize credenciais de identidade temporárias do Security Token Service (STS) para inicializar o provedor de credenciais. Essas credenciais incluem um AccessKey ID, um AccessKey secret e um token STS. No entanto, esse método exige a manutenção manual do token STS, o que aumenta os riscos de segurança e a complexidade operacional. Para saber como obter um token STS, consulte AssumeRole.

Especifique um par de AccessKey e um token STS no código para referenciar as credenciais. Os exemplos a seguir demonstram como atualize o token STS.

Manually update the STS token

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];

Automatically update the STS token

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étodo 3: Usar CredentialsURI

Se sua aplicação precisa obter e atualize automaticamente credenciais da Alibaba Cloud a partir de um sistema externo ou de uma configure personalizada para gerenciamento flexível de credenciais e acesso sem chaves, utilize CredentialsURI para inicializar o provedor de credenciais. Esse método usa um token STS como credencial subjacente. A ferramenta Credentials obtém o token STS a partir do URI fornecido para inicializar o cliente. Não é necessário fornecer um par de AccessKey ou um token STS, o que elimina os riscos associados à manutenção manual.

  1. Para que a ferramenta Credentials analise e utilize corretamente o token STS, o URI deve retornar uma resposta que siga este protocolo:

    • Código de status da resposta: 200

    • Estrutura do corpo da resposta:

      {
        "StatusCode":200,
        "AccessKeyId":"AccessKeyId",
        "AccessKeySecret":"AccessKeySecret",
        "Expiration":"2015-11-03T09:52:59Z",
        "SecurityToken":"SecurityToken"
      }                    
  2. Configure a credencial URI como credencial de acesso.

    NSString *authServerUrl = @"<authServerUrl>";
    id<OSSCredentialProvider> credentialProvider = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:authServerUrl];
  3. Se os dados estiverem criptografados, use o método a seguir para descriptografá-los.

    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;
    }];