Todos os produtos
Search
Central de documentação

Object Storage Service:Configure access credentials (Android SDK)

Última atualização: Jul 13, 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. Instalar o Android SDK.

Inicializar o provedor de credenciais

Escolher 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 chegam 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.

  • Configure o aplicativo móvel para obter uma credencial temporária do STS ou uma URL pré-assinada do 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 período curto de validade.

  • Para uploads e downloads de dados sensíveis, como documentos de identidade, imagens faciais, credenciais de pagamento ou registros médicos, faça o servidor de aplicativos gerar uma URL pré-assinada para uso pelo aplicativo móvel. O aplicativo móvel nunca deve armazenar credenciais. Para obter detalhes sobre URLs pré-assinadas, consulte Autorizar acesso (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 da credencial

Método 1: Usar um par de AccessKey

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

Método 2: Usar um token STS

Ambientes não confiáveis que exigem controle de validade e permissões das credenciais.

Sim

Token STS

Temporário

Personalizado

Método 3: Usar CredentialsURI

Aplicativos que obtêm credenciais de um sistema externo.

Não

Token STS

Temporário

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 - Criar um par de AccessKey para uma conta Alibaba Cloud ou usuário 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 dessa conta vazar, o 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>";

OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(ak, sk);

Método 2: Usar um token STS

Use credenciais temporárias do STS para inicializar o provedor de credenciais. Esta abordagem é ideal para aplicativos que necessitam de 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 operacional. Para obter um token STS, chame AssumeRole - Obter credenciais de identidade temporárias para uma função RAM.

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

Atualizar manualmente o token STS

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

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

Atualizar automaticamente o token STS

OSSCredentialProvider 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 CredentialsURI para inicializar o provedor de credenciais quando o aplicativo 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 esse token e inicializar o cliente, eliminando a necessidade de fornecer diretamente um par de AccessKey ou um token STS.

  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"
      }                    
  2. Configure a credencial da 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;
     *     }
     * });
     */