O ApsaraVideo VOD permite usar o recurso de assinatura de URL para proteger o conteúdo de origem contra downloads e acessos não autorizados. Esse recurso oferece três tipos de assinatura. Este tópico descreve como funciona a assinatura tipo C.
Como funciona
Como uma URL é assinada com base no tipo C
-
Formato 1
http://DomainName/{<md5hash>/<timestamp>}/FileName -
Formato 2
http://DomainName/FileName?{&KEY1=<md5hash>&KEY2=<timestamp>}
Observação
O conteúdo entre chaves ({}) representa as informações criptografadas adicionadas à URL padrão.
Campos de uma URL assinada
Campo | Descrição |
DomainName | O nome de domínio do ApsaraVideo VOD. |
PrivateKey | A chave primária ou secundária configurada no console do ApsaraVideo VOD. Para mais informações, consulte Ative e configure a assinatura de URL. |
Filename | A URL efetiva que aponta para o recurso solicitado no servidor de origem. O valor do campo Filename deve começar com uma barra ( |
timestamp | O momento em que a URL assinada é gerada. O timestamp e o período de validade padrão determinam quando a URL assinada expira. O timestamp segue o formato UNIX time, que corresponde ao número de segundos decorridos desde 00:00:00 de quinta-feira, 1º de janeiro de 1970. Trata-se de uma string composta por 10 inteiros decimais positivos, independente do fuso horário. Essa string decimal é convertida em uma string hexadecimal. Nota Na maioria dos casos, uma URL assinada expira após o período de validade padrão especificado no ApsaraVideo VOD. Caso você defina um período de validade para uma URL assinada no servidor de assinatura, o timestamp e o período de validade da URL assinada seguem esta fórmula: Timestamp = timestamp UNIX no servidor de assinatura + período de validade configurado no servidor de assinatura. Período de validade = Timestamp + Período de validade padrão. |
md5hash | A string calculada pelo algoritmo MD5. A string deve ter 32 caracteres e pode conter dígitos e letras minúsculas. O valor de |
Lógica de assinatura
Quando um ponto de presença (POP) do Alibaba Cloud CDN recebe uma requisição, o POP verifica se o tempo obtido pela soma dos valores de timestamp e default validity period é anterior ao horário atual.
Se o tempo obtido pela soma dos valores de
timestampedefault validity periodfor anterior ao horário atual, o POP considera que a URL expirou e retorna o código de status HTTP 403.Se o tempo obtido pela soma de
timestampedefault validity periodfor posterior ao horário atual, o POP gera uma string com base nosstringdescrito na tabela anterior. Depois, o POP calcula o valor demd5hashpelo algoritmo MD5 e o compara com o valor demd5hashpresente na requisição.
Exemplos
O exemplo a seguir demonstra como implementar a assinatura tipo C.
Condições de exemplo
-
Recupere um objeto do servidor de origem:
http://domain.example.com/test.flvNotaSe a URL do objeto solicitado contiver caracteres chineses, codifique a URL antes de concatenar uma URL assinada.
URL original:
https://example.com/image/aliyun.jpgURL codificada:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
Defina PrivateKey como
aliyuncdnexp1234.Defina timestamp como
55CE8100.
Procedimento de concatenação
-
Gere uma string de assinatura para calcular o valor de
md5hash.aliyuncdnexp1234/test.flv55CE8100 -
Calcule o valor de
md5hasha partir da string de assinatura.md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd -
Gere uma URL assinada.
-
Formato 1:
http://domain.example.com/a37fa50a5fb8f71214b1e7c95ec7a1bd/55CE8100/test.flv -
Formato 2:
http://domain.example.com/test.flv?KEY1=a37fa50a5fb8f71214b1e7c95ec7a1bd&KEY2=55CE8100
-
Quando um cliente usa uma URL assinada para requisitar um recurso, o Alibaba Cloud CDN compara o valor calculado de md5hash com o valor de md5hash presente na requisição. Se os valores forem iguais, como a37fa50a5fb8f71214b1e7c95ec7a1bd, a requisição passa na autenticação. Caso contrário, a autenticação falha.