A assinatura de URL protege os recursos do seu site contra downloads não autorizados e hotlinking. Este tópico descreve como a assinatura do tipo A funciona no Alibaba Cloud CDNDCDN e apresenta um exemplo.
Como funciona
-
Estrutura de uma URL assinada do tipo A
http://DomainName/Filename?auth_key={<timestamp>-rand-uid-<md5hash>}NotaO conteúdo entre
{}é a informação de assinatura adicionada à URL padrão. -
Descrição dos campos
Campo
Descrição
DomainName
O nome de domínio do seu site CDN.
Filename
A URL para a solicitação real à origem. O Filename deve começar com uma barra (
/).auth_key
As informações de assinatura, compostas por timestamp, rand, uid e md5hash.
timestamp
O momento em que o servidor de assinatura gera a URL assinada. Este valor e o Validity Period of Signed URL determinam juntos quando a URL assinada expira. O valor é um timestamp UNIX de 10 dígitos que representa o número de segundos decorridos desde 00:00:00 de 1º de janeiro de 1970.
NotaConfigure o TTL no console de Configure URL Signing. A URL assinada expira no
timestamp+ o período de validade configurado.rand
Um número aleatório. Defina este valor como um UUID sem hifens (-), por exemplo, 477b3bbc253f467b8def6711128c7bec.
uid
ID do usuário. Este campo não é usado. Defina-o como 0.
md5hash
Uma string de 32 caracteres calculada com o algoritmo MD5, composta por dígitos e letras minúsculas.
Método de cálculo:
sstring = "URI-Timestamp-rand-uid-PrivateKey" (URI is the relative path of the requested object, such as /Filename, and does not include parameters.) md5hash = md5sum(sstring) -
Lógica de autenticação
Quando um servidor CDNDCDN recebe uma solicitação de recurso, ele verifica se
timestamp+validity period of the signed URLé anterior à hora atual.Se
timestamp+validity period of the signed URLfor anterior à hora atual, a URL assinada expirou e o servidor retorna um erro HTTP 403.-
Se
timestamp+validity period of the signed URLfor posterior à hora atual, o servidor constrói uma string no formatosstring(consulte o formatosstringna tabela). Em seguida, calcula o valor domd5hashusando o algoritmo MD5 e compara o valor domd5hashcalculado com o valor domd5hashna solicitação do usuário.-
Se os valores coincidirem, a autenticação é bem-sucedida e o servidor retorna o recurso.
NotaApós uma autenticação bem-sucedida, o sistema remove os parâmetros de assinatura da URL. Isso melhora a taxa de acerto do cache e reduz o tráfego de retorno à origem. Por exemplo:
URL com parâmetros de assinatura:
http://DomainName/Filename?auth_key={<timestamp>-rand-uid-<md5hash>}-
Após a autenticação bem-sucedida:
Formato de URL usado para gerar a chave de cache:
http://DomainName/FileNameFormato de URL para a solicitação real à origem:
http://DomainName/FileName
Se os valores não coincidirem, a autenticação falha e o servidor retorna um erro HTTP 403.
-
Exemplo de URL assinada
O exemplo a seguir demonstra a assinatura do tipo A.
-
Condições do exemplo
-
Objeto da solicitação de origem:
http://domain.example.com/video/standard/test.mp4NotaSe a URL da solicitação contiver caracteres não ASCII, codifique a URL primeiro. Use a URL codificada para construir a string de hash. Por exemplo:
URL original:
https://example.com/image/AlibabaCloud.jpgURL codificada:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
Defina a chave como: aliyuncdnexp1234.
O servidor de assinatura gera a URL assinada às 08:00:00 de 10 de outubro de 2015 (UTC+8), o que corresponde ao valor inteiro decimal 1444435200.
-
-
Processo de concatenação
-
O servidor CDNDCDN constrói uma string para gerar o hash e calcular o
md5hash./video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234 -
Com base nessa string, o servidor CDNDCDN calcula o
md5hash.md5hash = md5sum("/video/standard/test.mp4-1444435200-0-0-aliyuncdnexp1234") = 23bf85053008f5c0e791667a313e28ce -
Gere a URL assinada.
http://domain.example.com/video/standard/test.mp4?auth_key=1444435200-0-0-23bf85053008f5c0e791667a313e28ce
-
Quando um cliente solicita um recurso ao usar a URL assinada, o servidor CDNDCDN calcula o valor do md5hash e o compara com o valor do md5hash na solicitação (23bf85053008f5c0e791667a313e28ce). Se os valores coincidirem e a URL assinada não tiver expirado, a autenticação é bem-sucedida. Caso contrário, a autenticação falha.