Todos os produtos
Search
Central de documentação

Object Storage Service:Include a V1 signature in a URL

Última atualização: Jul 03, 2026

Autorize solicitações gerando uma URL pré-assinada. Essa URL é uma alternativa ao campo Authorization no cabeçalho de solicitação HTTP e contém a assinatura e outras informações necessárias. Esse método permite conceder acesso temporário a recursos do Object Storage Service (OSS) para terceiros por um período específico, sem expor suas credenciais de acesso. Este tópico descreve como incluir uma assinatura V1 em uma URL.

Importante

O OSS oferece suporte ao algoritmo de assinatura V4, mais seguro. Utilize assinaturas V4 para obter maior segurança. Para obter mais informações, consulte Assinaturas V4.

Implementação de assinatura via SDK

Os SDKs do OSS implementam assinaturas V1 automaticamente. Portanto, não é necessário manipular assinaturas manualmente ao utilizar um SDK do OSS. Para compreender os detalhes da implementação em uma linguagem específica, consulte o código source do SDK. A tabela a seguir lista os arquivos responsáveis pela implementação da assinatura em cada SDK.

SDK

Implementação da assinatura

Exemplo de uso

Java

OSSV1Signer.java

Java

PHP

SignerV1.php

PHP

Node.js

signatureUrl.js

Node.js

Browser.js

Browser.js

Python

auth.py

Python

Android

ObjectURLPresigner.java

Android

iOS

OSSClient.m

iOS

Go

v1.go

Go

C++

SignerV1.cc

C++

C

oss_auth.c

C

.Net

OssClient.cs

.NET

Ruby

bucket.rb

Ruby

Observações de uso

  • Ao utilizar uma URL assinada, os dados autorizados ficam expostos na internet até que a URL expire. Avalie os riscos antes de adotar esse método.

  • O OSS não permite incluir assinaturas simultaneamente na URL e no cabeçalho da solicitação.

  • Gere uma URL pré-assinada para operações PUT a fim de garantir o upload correto do conteúdo. Quando um SDK pré-assina uma solicitação, ele calcula o checksum MD5 do corpo da requisição e o inclui na URL. O usuário deve enviar um conteúdo cujo checksum MD5 corresponda exatamente ao valor presente na URL pré-assinada; caso contrário, a operação falhará. Para validar o MD5, adicione o cabeçalho Content-MD5 à solicitação.

Implementação da assinatura

  • Exemplo de assinatura

    https://examplebucket.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=nz2p***********&Expires=1141889120&Signature=****Pxyb****mGa%****272YEAiv****

    Se você utilizar um usuário do Security Token Service (STS) para construir uma URL assinada, inclua o parâmetro security-token.

    https://examplebucket.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=nz2p***********&Expires=1141889120&Signature=****Pxyb****mGa%****272YEAiv****&security-token=CAIS****q6Ft5B2yfSjIr****Oz31blR9oWmWBf****DR/xm3Imc****IHxMdHJsCeAcs/Q0lGFR5/sflqJIR****EvCUcZr8szfWcsZos2****u5Jko1be0ewHKeQKZsebWZ+LmNpy/Ht6md1HDkAJq3LL+bk/Mdle5MJqP+/kFC9MMRVuAcCZhDtVbLRcYgq18D3bKMuu3ORPHm3fZCFES2jBxkmRi86+ysIP+phPVlw/90fRH5dazcJW0Zsx0OJo6Wcq+3+FqM6DQlTNM6hwNtoUO1fYUommb54nDXwQIvUjfbtC5qIM/cFVLAYEhAL****TGkvl1h/fejYyfyW****kFCHiPF****JCUSbr4a4sjF6zyPnPWycyCLYXleLzhxPWd/2kagAGaXG69BqwYNvrKKI3W8****bNc1wQDMXQfiHpFCRG6lYhh3****pwH90A3sTlxzRGvi8+****JwrluOHWs+Fj6S6s0cOhKvKRWYE8UuWeXIvv4l6DAGwH****LjLC11f5prUJ****b+3hwuBod32Jx+us/1p996Glao725orcb****

    Adicione um endereço IP específico, um intervalo de endereços IP ou um ID de VPC à URL assinada para impedir que clientes não autorizados acessem recursos do OSS.

    https://examplebucket.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?&OSSAccessKeyId=44CF****************&Expires=1475462111&Signature=77Dv****************&x-oss-ac-subnet-mask=32
  • Parâmetros

    Nome

    Tipo

    Obrigatório

    Descrição

    OSSAccessKeyId

    String

    Sim

    ID da AccessKey utilizada na assinatura da URL.

    Expires

    Number

    Sim

    Tempo de expiração da URL no formato de . O tempo Unix representa o número de segundos decorridos desde 00:00:00 UTC de 1º de janeiro de 1970. Se o OSS receber a solicitação após o tempo de expiração, retornará um código de erro de timeout. Por exemplo, se a hora atual for 1141889060 e você desejar criar uma URL que expire em 60 segundos, defina Expires como 1141889120.

    Nota

    Por motivos de segurança, o período de validade padrão de uma URL no console do OSS é de 3.600 segundos. O período máximo permitido é de 32.400 segundos. Para obter mais informações sobre como alterar o tempo de expiração da URL, consulte Usar URLs de arquivo.

    Signature

    String

    Sim

    Informações da assinatura. O formato é o seguinte:

    Signature = urlencode(base64(hmac-sha1(AccessKeySecret,
              VERB + "\n" 
              + CONTENT-MD5 + "\n" 
              + CONTENT-TYPE + "\n" 
              + EXPIRES + "\n" 
              + CanonicalizedOSSHeaders
              + CanonicalizedResource)))
    • O algoritmo para assinar uma URL assemelha-se ao algoritmo usado para incluir uma assinatura no cabeçalho, aplicável a todas as solicitações e parâmetros de cabeçalho suportados pelo OSS.

    • Ao calcular a string de assinatura a ser adicionada à URL, os cabeçalhos definidos na assinatura V1, como CONTENT-TYPE, CONTENT-MD5 e CanonicalizedOSSHeaders, são idênticos aos utilizados no cálculo da assinatura do cabeçalho Authorization. No entanto, substitua o parâmetro Date pelo parâmetro Expires na string de assinatura. Embora seja possível incluir o cabeçalho Date na solicitação, ele não precisa constar na string de assinatura.

    • Aplique codificação URL na assinatura ao incluí-la na URL. Caso Signature, Expires ou OSSAccessKeyId apareçam múltiplas vezes na URL, apenas o primeiro valor será considerado.

    • Quando uma URL assinada é utilizada, o OSS verifica primeiramente se o horário da solicitação ultrapassou o tempo definido em Expires e, em seguida, valida a assinatura.

    security-token

    String

    Não

    Token de segurança. Configure este parâmetro somente ao utilizar um usuário STS para construir a URL assinada.

    Nota

    Para obter mais informações sobre como configurar o serviço STS, consulte Usar credenciais de acesso temporárias do STS para acessar o OSS. Obtenha credenciais de acesso temporárias chamando a operação de API AssumeRole do STS ou utilizando os SDKs do STS para diferentes linguagens. As credenciais de acesso temporárias incluem um par de AccessKey temporário (AccessKey ID e AccessKey Secret) e um token de segurança (SecurityToken).

    x-oss-ac-source-ip

    String

    Não

    Especifique o endereço IP ou o intervalo de endereços IP.

    Importante
    • Este parâmetro é utilizado exclusivamente durante a geração da assinatura. Não é necessário incluí-lo na URL.

    • Caso adicione um endereço IP ou intervalo de IPs ao gerar a assinatura, passe também o parâmetro x-oss-ac-subnet-mask para especificar a máscara de sub-rede.

    x-oss-ac-subnet-mask

    Number

    Não

    Quantidade de bits 1 na máscara de sub-rede. Se a solicitação incluir este parâmetro, o OSS executará uma operação AND bit a bit entre o endereço IP real da solicitação e a máscara de sub-rede. O resultado servirá para verificar a assinatura. Qualquer adulteração neste parâmetro causará falha na validação da assinatura.

    x-oss-ac-vpc-id

    String

    Não

    Especifique o ID da VPC. Após definir este parâmetro, o OSS verifica se a solicitação se origina da VPC correspondente. Quando a solicitação provém do ID de VPC especificado e este parâmetro está configurado, o OSS valida tanto o ID da VPC quanto o endereço IP de origem ou o intervalo de endereços IP.

    x-oss-ac-forward-allow

    Boolean

    Não

    Defina se solicitações encaminhadas são permitidas. Se o OSS detectar este campo e a solicitação contiver X-Forwarded-For (que pode conter múltiplos endereços IP), o sistema usará o valor de X-Forwarded-For para validar a assinatura.

    Os valores válidos são:

    • true: Permite solicitações encaminhadas.

      Importante

      Definir este valor como true cria o risco de o cabeçalho da solicitação ser adulterado ou sequestrado.

    • false (padrão): Não permite solicitações encaminhadas.

  • Código de exemplo em Python para assinatura (incluindo apenas parâmetros obrigatórios)

    import base64
    import hmac
    import hashlib
    from urllib.parse import quote
    
    access_key_secret = "yourAccessKeySecret"
    string_to_sign = "GET\n\n\n1141889120\n/examplebucket/oss-api.pdf"
    
    h = hmac.new(
        access_key_secret.encode('utf-8'),
        string_to_sign.encode('utf-8'),
        hashlib.sha1
    )
    
    signature = quote(base64.b64encode(h.digest()).decode('utf-8'))
    print(signature)

Códigos de erro

Código de erro

Mensagem retornada

Descrição

AccessDenied

403 Forbidden

Os parâmetros Signature, Expires e OSSAccessKeyId são obrigatórios. A ordem dos parâmetros não é relevante.

AccessDenied

403 Forbidden

A solicitação foi recebida após o horário especificado no parâmetro Expires ou o formato de tempo está incorreto.

InvalidArgument

400 Bad Request

Pelo menos um dos parâmetros Signature, Expires ou OSSAccessKeyId está presente na URL e as informações de assinatura também foram incluídas no cabeçalho de solicitação Authorization.