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 suporte a três tipos de assinatura. Este tópico descreve o funcionamento da assinatura do tipo A.
Como funciona
Assinatura de URL baseada no tipo A
http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash
Campos em uma URL assinada
Campo | Descrição |
DomainName | Nome de domínio do ApsaraVideo VOD. |
Filename | URL real que aponta para o recurso solicitado no servidor de origem. O valor do campo Filename deve começar com uma barra ( |
auth_key | Chave criptográfica especificada. |
timestamp | Momento de geração da URL assinada. O timestamp e o período de validade padrão definem a expiração da URL. O horário segue o fuso UTC+8 e o formato AAAAMMDDHHMM. Nota Geralmente, a URL assinada expira após o término do período de validade padrão definido no ApsaraVideo VOD. Se você definir um período de validade para a URL assinada no servidor de assinatura, o sistema calcula o timestamp e o período de validade conforme a seguinte 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. |
rand | Número aleatório. Geralmente, esse campo tem valor 0. Para gerar uma URL diferente a cada vez, use um UUID. O valor não pode conter hifens ( |
uid | ID do usuário. Defina este campo como 0. |
md5hash | String calculada pelo algoritmo MD5. Deve ter 32 caracteres e pode conter dígitos e letras minúsculas.
|
Lógica de assinatura
Quando um ponto de presença (POP) do Alibaba Cloud CDN recebe uma solicitação, ele verifica se o horário resultante da soma de timestamp e default validity period é anterior ao horário atual.
Se o horário calculado pela soma de
timestampedefault validity periodfor anterior ao horário atual, o POP considera a URL expirada e retorna o código de status HTTP 403.-
Caso o horário resultante da soma de
timestampedefault validity periodseja posterior ao horário atual, o POP gera uma string baseada emsstring, conforme descrito na tabela anterior. Em seguida, usa o algoritmo MD5 para calcular o valor demd5hashe o compara com o valor demd5hashpresente na solicitação.Se os dois valores forem diferentes, a autenticação falha e o POP retorna o código de status HTTP 403.
-
Se os valores forem idênticos, a solicitação passa na autenticação e o POP retorna o recurso solicitado.
NotaApós a aprovação na autenticação, o sistema remove os parâmetros específicos desse processo da URL para aumentar a taxa de acerto de cache e reduzir o tráfego de origem.
O formato da URL na solicitação de retorno à origem é
http://DomainName/FileName.O formato da URL usada para gerar uma chave de cache é
http://DomainName/FileName.
Exemplo de concatenação de URL assinada
O exemplo a seguir demonstra como implementar a assinatura do tipo A.
Condições do exemplo
-
Recupere um objeto do servidor de origem:
http://example.aliyundoc.com/video/standard/test.mp4NotaSe a URL do objeto recuperado do servidor de origem contiver caracteres chineses, codifique-a antes de concatenar a URL assinada.
Defina a PrivateKey como aliyunvodexp1234.
Converta o timestamp de geração da URL assinada, 2021-08-01 00:00:00 (UTC+8), para o inteiro decimal 1627747200.
Procedimento de concatenação
-
Gere a string de assinatura usada para calcular o valor de
md5hash./video/standard/test.mp4-1627747200-0-0-aliyunvodexp1234 -
Calcule o valor de
md5hashcom base na string de assinatura.HashValue = md5sum("/video/standard/test.mp4-1627747200-0-0-aliyunvodexp1234") = 0e9048c8c7de46b6015618f42de7**** -
Gere a URL assinada.
http://example.aliyundoc.com/video/standard/test.mp4?auth_key=1627747200-0-0-0e9048c8c7de46b6015618f42de7****
Ao receber uma solicitação de recurso via URL assinada, o POP compara o valor calculado de md5hash com o valor de md5hash enviado na solicitação. Se ambos forem iguais, como 0e9048c8c7de46b6015618f42de7****, a autenticação será bem-sucedida. Caso contrário, a autenticação falhará.