Todos os produtos
Search
Central de documentação

Object Storage Service:Configure access credentials (Android SDK)

Última atualização: Sep 02, 2026

Para enviar solicitações ao OSS com o Android SDK, configure as credenciais de acesso. Escolha os provedores de credenciais adequados aos seus requisitos de autenticação e autorização.

Pré-requisitos

O OSS Android SDK está instalado. Instale o Android SDK.

Inicializar o provedor de credenciais

Escolha um provedor de credenciais

O OSS oferece vários métodos para inicializar provedores de credenciais. Escolha a opção adequada ao seu cenário.

Importante

Dispositivos móveis são ambientes não confiáveis. Credenciais de acesso total — pares de AccessKey de longo prazo ou tokens STS temporários — que cheguem ao cliente podem ser extraídas por engenharia reversa ou depuração em tempo de execução. Para reduzir o risco de vazamento de dados, estruture o caminho de acesso entre o aplicativo móvel e o OSS da seguinte forma:

  • Mantenha os pares de AccessKey de longo prazo no servidor de aplicativos. Nunca os envie ao cliente móvel.

  • Obtenha uma credencial temporária do STS ou uma URL pré-assinada no servidor de aplicativos antes de chamar o OSS.

  • Ao usar credenciais temporárias do STS, aplique uma política do RAM que restrinja as permissões ao prefixo de caminho de objeto de um único usuário e defina um curto período de validade.

  • Para uploads e downloads de dados sensíveis à privacidade, como documentos de identidade, imagens faciais, credenciais de pagamento ou registros médicos, gere uma URL pré-assinada no servidor de aplicativos. O aplicativo móvel nunca deve armazenar credenciais. Para obter detalhes sobre URLs pré-assinadas, consulte Authorize access (Android SDK).

Método de inicialização do provedor de credenciais

Cenário

Requer par de AccessKey ou token STS pré-configurado

Tipo de credencial subjacente

Validade da credencial

Método de rotação ou atualização de credencial

Method 1: Use an AccessKey pair

Ambientes seguros e estáveis, não vulneráveis a ataques externos, que exigem acesso de longo prazo sem rotação frequente de credenciais.

Sim

AccessKey

Longo prazo

Rotação manual

Method 2: Use an STS token

Ambientes não confiáveis onde é necessário controlar a validade e as permissões das credenciais.

Sim

Token STS

Temporária

Personalizado

Method 3: Use CredentialsURI

Aplicações que obtêm credenciais de um sistema externo.

Não

Token STS

Temporária

Atualização automática

Método 1: Usar um par de AccessKey

Use o par de AccessKey (AccessKey ID e AccessKey secret) de uma conta Alibaba Cloud ou de um usuário do RAM para inicializar o provedor de credenciais. Este método é adequado para ambientes seguros e estáveis que exigem acesso de longo prazo ao OSS sem rotação frequente de credenciais. A manutenção manual de chaves apresenta riscos de segurança e aumenta a complexidade operacional. Para obter um par de AccessKey, chame CreateAccessKey - Crie um par de AccessKey para uma conta Alibaba Cloud ou um usuário do RAM.

Aviso

Este método não é recomendado para clientes móveis. Uma conta Alibaba Cloud possui permissões totais sobre todos os recursos. Se o par de AccessKey de uma conta Alibaba Cloud vazar, seu sistema enfrentará altos riscos de segurança. Caso seja indispensável usar este método, utilize o par de AccessKey de um usuário do RAM com as permissões mínimas necessárias.

Código de exemplo

String ak = "<ALIBABA_CLOUD_ACCESS_KEY_ID>";
String sk = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";

CredentialProvider credentialProvider = new DefaultCredentialProvider(ak, sk);

Método 2: Usar um token STS

Use credenciais temporárias do STS para inicializar o provedor de credenciais. Esta opção é ideal para aplicações que requerem acesso temporário ao OSS com controle de permissões granular e em tempo real. As credenciais incluem um AccessKey ID, um AccessKey secret e um token STS. A manutenção manual de tokens gera riscos de segurança e eleva a complexidade de manutenção. Para obter um token STS, chame AssumeRole - Obtain temporary identity credentials for a RAM role.

Os exemplos a seguir mostram como atualize o token STS manual ou automaticamente.

Atualize manualmente o token STS

String ak = "<ALIBABA_CLOUD_ACCESS_KEY_ID>";
String sk = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
String token = "<ALIBABA_CLOUD_SECURITY_TOKEN>";

CredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(ak, sk, token);

Atualize automaticamente o token STS

CredentialProvider credentialProvider = new OSSFederationCredentialProvider() {
    @Override
    public OSSFederationToken getFederationToken() {

        /* Obtain the AccessKey ID, AccessKey secret, STS token, and expiration time.
         * The following example shows how to obtain the credentials from an application server:
         * URL stsUrl = new URL("<server_url>");
         * HttpURLConnection conn = (HttpURLConnection) stsUrl.openConnection();
         * InputStream input = conn.getInputStream();
         * String jsonText = IOUtils.readStreamAsString(input, OSSConstants.DEFAULT_CHARSET_NAME);
         * JSONObject jsonObjs = new JSONObject(jsonText);
         * String ak = jsonObjs.getString("AccessKeyId");
         * String sk = jsonObjs.getString("AccessKeySecret");
         * String token = jsonObjs.getString("SecurityToken");
         * String expiration = jsonObjs.getString("Expiration");
         */
        String ak = "<ALIBABA_CLOUD_ACCESS_KEY_ID>";
        String sk = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
        String token = "<ALIBABA_CLOUD_SECURITY_TOKEN>";
        String expiration = "<ALIBABA_CLOUD_EXPIRATION>";

        // Construct an OSSFederationToken object from the AccessKey ID, AccessKey secret, STS token, and expiration time.
        OSSFederationToken federationToken = new OSSFederationToken(ak, sk, token, expiration);
        return federationToken;
    }
};

Método 3: Usar CredentialsURI

Use o CredentialsURI para inicializar o provedor de credenciais quando sua aplicação precisar obter credenciais de um sistema externo, permitindo gerenciamento flexível e acesso sem chaves. A implementação subjacente usa um token STS. A ferramenta Credentials utiliza a URI fornecida para recuperar um token STS e inicializar o cliente, eliminando a necessidade de fornecer diretamente um par de AccessKey ou um token STS.

A remote_url (authServerUrl no código de exemplo) deve ser fornecida por um service de backend implantado por você. Não se trata de uma URL fornecida pela Alibaba Cloud. A ferramenta Credentials envia uma solicitação HTTP GET para essa URL, e seu service de backend deve retornar credenciais temporárias em conformidade com o protocolo descrito abaixo.

  1. A URI deve retornar uma resposta em conformidade com o seguinte 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"
      }                    

      No corpo da resposta, o campo StatusCode é definido como 200 pelo seu service de backend. Os campos AccessKeyId, AccessKeySecret, Expiration e SecurityToken provêm do objeto Credentials retornado pela operação AssumeRole do STS. Seu service de backend deve chamar AssumeRole para obter esses valores e incluí-los no corpo da resposta. Para mais informações sobre AssumeRole, consulte Use STS temporary access credentials to access OSS.

    Exemplo de service de backend (Python):

    from alibabacloud_sts20150401.client import Client as StsClient
    from alibabacloud_sts20150401 import models as sts_models
    import json
    
    def get_credentials():
        request = sts_models.AssumeRoleRequest(
            role_arn='<your_role_arn>',
            role_session_name='<your_session_name>'
        )
        response = sts_client.assume_role(request)
        creds = response.body.credentials
        return json.dumps({
            'StatusCode': 200,
            'AccessKeyId': creds.access_key_id,
            'AccessKeySecret': creds.access_key_secret,
            'Expiration': creds.expiration,
            'SecurityToken': creds.security_token
        })

    Exemplo de service de backend (Node.js):

    const STS = require("@alicloud/sts20150401");
    const stsClient = new STS.default({
      accessKeyId: "<yourAccessKeyId>",
      accessKeySecret: "<yourAccessKeySecret>",
      endpoint: "sts.aliyuncs.com",
    });
    const result = await stsClient.assumeRole("<roleArn>", "<sessionName>");
    const creds = result.body.credentials;
    res.status(200).json({
      StatusCode: 200,
      AccessKeyId: creds.accessKeyId,
      AccessKeySecret: creds.accessKeySecret,
      Expiration: creds.expiration,
      SecurityToken: creds.securityToken,
    });
  2. Configure a credencial URI como credencial de acesso.

    String authServerUrl = "<remote_url>";
    OSSAuthCredentialsProvider credentialProvider = new OSSAuthCredentialsProvider(authServerUrl);
    /* If the data is encrypted, you can use the following code to decrypt it.
     * credentialProvider.setDecoder(new OSSAuthCredentialsProvider.AuthDecoder() {
     *     @Override
     *     public String decode(String data) {
     *         String result = null;
     *         // Decrypt the data.
     *         // result = ...
     *         return result;
     *     }
     * });
     */