A assinatura de URL protege os recursos do seu site contra downloads não autorizados e hotlinking. O Alibaba Cloud CDNDCDN oferece suporte a quatro métodos de assinatura. A assinatura Tipo B insere um timestamp e um hash MD5 no caminho da URL para controlar o acesso por tempo limitado.
Como funciona
-
Estrutura da URL assinada para assinatura Tipo B
http://DomainName/{<timestamp>/<md5hash>}/FileNameNotaO conteúdo em
{}corresponde às informações de assinatura anexadas à URL padrão.Campos de autenticação
Campo
Descrição
DomainName
Nome de domínio acelerado.
timestamp
Momento em que o servidor de assinatura gera a URL assinada, no formato UTC+8
YYYYMMDDHHMM. Esse campo, combinado ao validity period, define a expiração da URL assinada.NotaConfigure o TTL no console Configure URL Signing. A URL assinada expira no
timestamp+ período de validade configurado.md5hash
String de 32 caracteres calculada pelo algoritmo MD5, composta pelos dígitos 0–9 e letras minúsculas a–z.
O valor de
md5hashé calculado a partir da seguinte string:sstring = "Privatekey+timestamp+Path" (Path is the relative address of the requested object, which does not contain parameters, such as /Filename) md5hash = md5sum(sstring)Filename
Caminho do arquivo solicitado. Deve começar com
/. -
Lógica de autenticação
Ao receber uma solicitação, o servidor CDNDCDN verifica se a soma do
timestampcom ovalidity periodé anterior à hora atual.Se a soma for anterior à hora atual, a URL estará expirada e o servidor retornará HTTP 403.
-
Caso a soma seja posterior à hora atual, o servidor constrói uma string no formato
sstring, calcula o valor demd5hashcom o algoritmo MD5 e o compara com o valor demd5hashpresente na solicitação.-
Se os valores coincidirem, a autenticação terá êxito e o recurso será retornado.
NotaApós a autenticação bem-sucedida, os parâmetros de assinatura são removidos da URL para restaurar seu formato original. Essa ação melhora a taxa de acerto de cache e reduz o tráfego de back-to-origin. Exemplo:
URL com parâmetros de autenticação:
http://DomainName/{<timestamp>/<md5hash>}/FileName-
Após autenticação bem-sucedida:
URL usada para gerar a chave de cache:
http://DomainName/FileNameURL usada para buscar a origem:
http://DomainName/FileName
Se os valores não coincidirem, a autenticação falhará e o servidor retornará HTTP 403.
-
Exemplo de URL assinada
O exemplo a seguir demonstra o funcionamento da assinatura Tipo B.
-
Condições do exemplo
-
Objeto da solicitação original:
http://domain.example.com/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3NotaSe a URL da solicitação contiver caracteres não ASCII, codifique a URL primeiro. Utilize a URL codificada para construir a string de hash. Exemplo:
URL original:
https://example.com/image/AlibabaCloud.jpgURL codificada:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
Nome de domínio do site CDNDCDN (DomainName):
domain.example.com.Timestamp (timestamp):
201508150800.Chave privada (Privatekey):
aliyuncdnexp1234.Caminho relativo da solicitação do usuário (Path):
/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3.Caminho do arquivo acessado na origem (Filename):
/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3.
-
-
Fluxo de concatenação
-
Construa a string para hashing:
// sstring="Privatekey+timestamp+Path" sstring=aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3 -
Calcule o valor md5hash:
// md5hash = md5sum(sstring) md5hash = md5sum("aliyuncdnexp1234201508150800/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3") = 9044548ef1527deadafa49a890a377f0 -
Gere a URL assinada:
// Signed URL=http://DomainName/{<timestamp>/<md5hash>}/FileName http://domain.example.com/201508150800/9044548ef1527deadafa49a890a377f0/4/44/44c0909bcfc20a01afaf256ca99a8b8b.mp3
-
Quando um cliente envia uma solicitação com a URL assinada, o servidor CDNDCDN recalcula o valor de md5hash. Se esse valor coincidir com o md5hash da solicitação (9044548ef1527deadafa49a890a377f0) e a URL não tiver expirado, a autenticação terá êxito. Caso contrário, a autenticação falhará.