Para aumentar a segurança, o Object Storage Service (OSS) está descontinuando a Signature V1. Atualize para a Signature V4 o mais rápido possível para garantir que suas aplicações continuem funcionando corretamente.
Como atualizar da Assinatura V1 para a Assinatura V4
Siga o guia correspondente para concluir o upgrade de acordo com o seu uso atual.
Ferramenta | Tipo | Versões com suporte à V4 | Guia de upgrade |
OSS SDK | Java | ||
Python V2 | |||
Python V1 | |||
Go V2 | |||
Go V1 | |||
PHP V2 | |||
PHP V1 | |||
C# V2 | |||
C# V1 | |||
JavaScript | |||
C++ | |||
C | |||
Swift | |||
Objective-C | |||
Android | |||
ossutil | ossutil 2.0 | ||
ossutil 1.0 | |||
ossfs | ossfs 2.0 | ||
ossfs 1.0 | |||
API (construção manual de assinatura) | Para saber como atualizar um algoritmo de assinatura V1 construído manualmente para a V4, consulte API (construção manual de assinatura). | ||
console do OSS | As atualizações do OSS ocorrem automaticamente. O processo é transparente para os usuários. | ||
OSS SDK
Java
Atualize o OSS SDK for Java para a versão 3.17.4 ou posterior.
-
Ao inicializar um OSS Client com a Signature V4, execute as seguintes etapas:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.Declare explicitamente o uso do algoritmo de assinatura V4. Por exemplo:
SignVersion.V4.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Python
Python V2
Todas as versões do OSS SDK for Python V2 suportam a Signature V4 por padrão.
-
Ao inicializar um OSS Client com a Signature V4, execute a seguinte etapa:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Python V1
Atualize o OSS SDK for Python V1 para a versão 2.18.4 ou posterior.
-
Ao inicializar um OSS Client com a Signature V4, execute as seguintes etapas:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.Declare explicitamente o uso do algoritmo de assinatura V4. Por exemplo:
oss2.ProviderAuthV4.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Go
Go V2
Todas as versões do OSS SDK for Go V2 suportam a Signature V4 por padrão.
-
Ao inicializar um OSS Client com a Signature V4, execute a seguinte etapa:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Go V1
Todas as versões do OSS SDK for Go V2 suportam a Signature V4 por padrão. Migre do Go V1 para o Go V2.
Atualize o OSS SDK for Go V1 para a versão 3.0.2 ou posterior.
-
Ao inicializar um OSS Client com a Signature V4, execute as seguintes etapas:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.Declare explicitamente o uso do algoritmo de assinatura V4. Por exemplo:
oss.AuthV4.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
PHP
PHP V2
Todas as versões do OSS SDK for PHP V2 suportam a Signature V4 por padrão.
-
Ao inicializar um OSS Client com a Signature V4, execute a seguinte etapa:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
PHP V1
Atualize o OSS SDK for PHP V1 para a versão 2.7.0 ou posterior.
-
Ao inicializar um OSS Client com a Signature V4, execute as seguintes etapas:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.Declare explicitamente o uso do algoritmo de assinatura V4. Por exemplo:
OSS_SIGNATURE_VERSION_V4.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
C#
C# V2
Todas as versões do OSS SDK for C# V2 suportam a Signature V4 por padrão.
-
Ao inicializar um OSS Client com a Signature V4, execute a seguinte etapa:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.
using OSS = AlibabaCloud.OSS.V2; // Crie um alias para o Alibaba Cloud OSS SDK para simplificar o uso posterior. var region = "cn-hangzhou"; // Obrigatório. Especifique a região onde o bucket está localizado. Por exemplo, se o seu bucket estiver localizado na região China (Hangzhou), defina a região como cn-hangzhou. var endpoint = null as string; // Opcional. Especifique o endpoint para acessar o OSS. Por exemplo, se o bucket estiver localizado na região China (Hangzhou), defina o endpoint como https://oss-cn-hangzhou.aliyuncs.com. // Carregue a configuração padrão do SDK, que lê automaticamente as credenciais (como o AccessKey) das variáveis de ambiente. var cfg = OSS.Configuration.LoadDefault(); // Use explicitamente as variáveis de ambiente para obter credenciais para autenticação. (Formato: OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET) cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider(); // Defina a região na configuração. cfg.Region = region; // Se um endpoint for especificado, substitua o endpoint padrão. if(endpoint != null) { cfg.Endpoint = endpoint; } // Use a configuração para criar uma instância do Client. using var client = new OSS.Client(cfg); // Use a instância do Client para realizar operações subsequentes.
C# V1
Atualize o OSS SDK for C# V1 para a versão 2.14.0 ou posterior.
-
Ao inicializar um OSS Client com a Signature V4, execute as seguintes etapas:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.Declare explicitamente o uso do algoritmo de assinatura V4. Por exemplo:
SignVersion.V4.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Node.js
Atualize o OSS SDK for Node.js para a versão 6.20.0 ou posterior.
-
Ao inicializar um OSS Client com a Signature V4, execute as seguintes etapas:
Especifique o ID da região dedicada do OSS do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
oss-cn-hangzhou.Declare explicitamente o uso do algoritmo de assinatura V4. Por exemplo:
authorizationV4.
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Browser.js
Atualize o OSS SDK for Browser.js para a versão 6.20.0 ou posterior.
-
Ao inicializar um OSS Client com a Signature V4, execute as seguintes etapas:
Especifique o ID da região dedicada do OSS do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
oss-cn-hangzhou.Declare explicitamente o uso do algoritmo de assinatura V4. Por exemplo:
authorizationV4.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
C++
Atualize o OSS SDK for C++ para a versão 1.10.0 ou posterior.
-
Ao inicializar um OSS Client com a Signature V4, execute as seguintes etapas:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.Declare explicitamente o uso do algoritmo de assinatura V4. Por exemplo:
SignatureVersionType::V4.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
C
Atualize o OSS SDK for C para a versão 3.11.0 ou posterior.
-
Ao inicializar um OSS Client com a Signature V4, execute as seguintes etapas:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.Declare explicitamente o uso do algoritmo de assinatura V4. Por exemplo:
signature_version = 4.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Swift
Todas as versões do OSS SDK for Swift suportam a Signature V4 por padrão.
-
Ao inicializar um OSS Client com a Signature V4, execute a seguinte etapa:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
iOS
Atualize o OSS SDK for iOS para a versão 2.11.1 ou posterior.
-
Ao inicializar um OSS Client com a Signature V4, execute as seguintes etapas:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.Declare explicitamente o uso do algoritmo de assinatura V4. Por exemplo:
OSSSignVersionV4.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Android
Atualize o OSS SDK for Android para a versão 2.3 ou posterior.
-
Ao inicializar um OSS Client com a Signature V4, execute as seguintes etapas:
Especifique o ID da região do bucket como identificador para a região da requisição. Por exemplo, o ID da região para China (Hangzhou) é
cn-hangzhou.Declare explicitamente o uso do algoritmo de assinatura V4. Por exemplo:
SignVersion.V4.
Exemplo de código
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
ossutil
ossutil 2.0
Todas as versões da interface de linha de comando ossutil 2.0 suportam a Signature V4 por padrão.
Em comparação com a Signature V1, ao usar a Signature V4, defina o parâmetro Region como o ID da região do bucket ao configurar o ossutil.
Exemplo de comando
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
ossutil 1.0
Todas as versões do ossutil 2.0 suportam a Signature V4 por padrão. Migre do ossutil 1.0 para o ossutil 2.0.
A versão 1.7.12 e posteriores da interface de linha de comando ossutil 1.0 suportam a Signature V4.
Em comparação com a Signature V1, ao usar a Signature V4, execute o seguinte no comando:
Defina a opção
--sign-versioncomov4.Defina a opção
--regioncomo o ID da região do bucket.
Exemplo de comando
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
ossfs
ossfs 2.0
Todas as versões do ossfs 2.0 (Preview) oferecem suporte à Signature V4, mas utilizam a Signature V1 por padrão.
-
Antes de fazer o upgrade, execute o comando
ossfs --versionpara verificar a versão atual e conclua os seguintes pré-requisitos de acordo com a sua versão.ImportanteA desinstalação interromperá os seus serviços. Execute esta operação fora dos horários de pico.
Desmonte o sistema de arquivos do OSS. Substitua
<mountpoint>pelo seu diretório real.Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>Após desmontar, siga o comando de exemplo para fazer o upgrade.
Em comparação com a Signature V1, ao usar a Signature V4, é necessário incluir os seguintes parâmetros no comando de montagem:
Defina a opção
oss_regioncom o ID da região do bucket.
Comando de exemplo
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
ossfs 1.0
A versão 1.91.4 e as versões posteriores do ossfs 1.0 oferecem suporte à Signature V4.
-
Antes de fazer o upgrade, execute o comando
ossfs --versionpara verificar a versão atual e conclua os seguintes pré-requisitos de acordo com a sua versão.ImportanteA desinstalação interromperá os seus serviços. Execute esta operação fora dos horários de pico.
Fazer upgrade para V4 se o requisito de versão for atendido
Desmonte o sistema de arquivos do OSS. Substitua
<mountpoint>pelo seu diretório real.Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>Após desmontar, siga o Comando de exemplo para fazer o upgrade.
Fazer upgrade para V4 se o requisito de versão não for atendido
-
Desmonte o sistema de arquivos do OSS. Substitua
<mountpoint>pelo seu diretório real.Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature> -
Desinstale a versão antiga.
Se você instalou o ossfs usando um gerenciador de pacotes, como
aptouyum, execute o seguinte comando:Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>Se você compilou e instalou o ossfs a partir do código-fonte, acesse o diretório de instalação e execute o seguinte comando:
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Após instalar a nova versão, siga o Comando de exemplo para fazer o upgrade.
-
Em comparação com a Signature V1, ao usar a Signature V4, é necessário incluir os seguintes parâmetros no comando de montagem:
Defina a opção
sigv4.Defina a opção
regioncom o ID da região do bucket.
Comando de exemplo
Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
API (construção manual de assinatura)
Use um SDK do OSS para enviar solicitações, pois o SDK calcula a assinatura automaticamente. Se não for possível usar um SDK do OSS, construa manualmente uma assinatura V4 e garanta que a solicitação esteja correta.
|
Método de assinatura |
Descrição |
Referências |
|
Incluir a assinatura no cabeçalho |
No OSS, o método mais comum para verificação de identidade é incluir a assinatura no cabeçalho Authorization de uma solicitação HTTP. Todas as operações do OSS, exceto aquelas que usam assinaturas POST ou assinaturas de URL, exigem autenticação por meio do cabeçalho Authorization. |
|
|
Incluir a assinatura na URL |
Você pode conceder acesso de terceiros aos seus recursos do OSS por um período de validade específico sem revelar suas credenciais de acesso. Para isso, gere uma URL assinada que inclua a assinatura e outras informações necessárias para a solicitação. |
|
|
Assinatura de solicitação POST |
A assinatura PostObject é um mecanismo que permite enviar arquivos diretamente para o OSS por meio de um formulário HTML. Esse mecanismo possibilita a construção de um formulário HTML em um cliente, como um navegador web. O formulário inclui campos para o arquivo a ser enviado e outros parâmetros necessários, como a assinatura, o par de AccessKey, o nome do bucket e a chave do objeto. Ao enviar o formulário, o sistema transmite essas informações ao OSS por meio de uma solicitação HTTP POST, e o OSS verifica a validade da solicitação. |
Cronograma de descontinuação e impacto da Assinatura V1
De acordo com o Anúncio de descontinuação da Assinatura Versão 1 do Alibaba Cloud Object Storage Service, a Assinatura V1 do Alibaba Cloud Object Storage Service será gradualmente descontinuada para novos clientes (novos UIDs) a partir de 1º de março de 2025. A partir de 1º de setembro de 2025, a Assinatura V1 não receberá mais atualizações nem manutenção e não estará disponível para novos buckets.
Comparação entre a Assinatura V1 e a Assinatura V4
|
Item |
||
|
Algoritmo de assinatura |
HMAC-SHA1 |
HMAC-SHA256 |
|
Período de validade da URL assinada |
O horário de assinatura pode ser superior a 7 dias no passado. O período de validade pode exceder 7 dias. |
O horário de assinatura é limitado aos últimos 7 dias. O período de validade é limitado a 7 dias. |
|
Construção da string de assinatura |
A string de assinatura inclui o método HTTP, Content-MD5, Content-Type, data, cabeçalhos canonizados e o caminho do recurso. |
A string de assinatura possui uma estrutura mais complexa, que inclui o método de requisição, URI canonizada, parâmetros de consulta canonizados, cabeçalhos canonizados, cabeçalhos assinados adicionais e o hash do payload. |
|
Cabeçalhos e parâmetros de consulta canonizados |
Apenas os cabeçalhos com o prefixo |
Todos os cabeçalhos com o prefixo |
|
Codificação do caminho do recurso |
A barra (/) no caminho do recurso é codificada. |
A |
|
Formato de carimbo de data/hora e data |
Utiliza o formato de data HTTP padrão, por exemplo, Wed, 21 Oct 2015 07:28:00 GMT. |
Utiliza o formato ISO 8601 para horário UTC, por exemplo, 20151021T072800Z. |
|
Informações da região |
A assinatura não inclui informações de região. |
As regras de assinatura introduzem o conceito de região. Tanto a string de assinatura quanto a chave de assinatura devem incluir o ID da região. |
Perguntas frequentes
Como verificar rapidamente se estou usando a Assinatura V1 ou a Assinatura V4?
Use a Consulta de log em tempo real ou uma ferramenta de captura de pacotes, como Wireshark ou Fiddler, e visualize o campo Authorization no cabeçalho da requisição HTTP enviada ao OSS.
-
Assinatura V1: O campo
Authorizationcomeça comOSSe tem o seguinte formato:Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature> -
Assinatura V4: O campo
Authorizationcomeça comOSS4-HMAC-SHA256e tem o seguinte formato:Authorization: OSS4-HMAC-SHA256 Credential=<AccessKeyId>/<Date>/<Region>/oss/aliyun_v4_request, AdditionalHeaders=<Headers>, Signature=<Signature>
Como solucionar um erro SignatureDoesNotMatch
Se o cálculo da assinatura estiver incorreto, o sistema retornará o código de erro SignatureDoesNotMatch. Para localizar rapidamente o problema, compare as informações relacionadas à assinatura geradas pelo servidor e pelo cliente. A resposta retornada pelo servidor contém as seguintes informações principais:
CanonicalRequest: A string de consulta canonizada gerada pelo servidor.StringToSign: A string a ser assinada gerada pelo servidor com base na requisição canonizada.Signature: O valor final da assinatura calculado pelo servidor.
A comparação desses campos com os correspondentes gerados pelo cliente permite identificar rapidamente as diferenças e localizar a origem do erro. Por exemplo:
Se o
CanonicalRequestestiver inconsistente, a ordem de concatenação ou o formato dos parâmetros de requisição pode estar incorreto.Se a
StringToSignestiver inconsistente, a data, a região ou as informações do produto cloud podem estar definidas incorretamente.Se a
Signatureestiver inconsistente, pode haver um problema no cálculo da chave derivada ou na implementação do algoritmo de assinatura.