Todos os produtos
Search
Central de documentação

ApsaraVideo Live:URLs de ingestão e streaming assinadas

Última atualização: Sep 07, 2026

Para evitar downloads maliciosos e o roubo de recursos do site, configure uma lista de bloqueios ou uma lista de permissões de Referer para identificar e filtrar visitantes. Use também URLs de ingestão e streaming assinadas para proteger melhor os recursos no servidor de origem. Este tópico descreve o funcionamento do recurso de assinatura de URL, como configurá-lo e as notas de uso.

Componentes da URL assinada

As URLs assinadas são adequadas para PCs, dispositivos móveis e ferramentas de ingestão e reprodução de terceiros. Elas consistem em uma URL de ingestão ou uma URL de streaming + um token de acesso. Exemplo:

rtmp://push.aliyundoc.com/app/stream?auth_key=1740562218-0-0-183e22e*********

O parâmetro auth_key é o Access Token.

Estrutura de um token de acesso

timestamp-rand-uid-md5hash
  • timestamp: Timestamp UNIX, expresso em segundos. O tempo final de expiração resulta da soma desse valor ao período de validade da assinatura de URL do domínio.

    Ao usar o gerador de URLs no console do ApsaraVideo Live para gerar uma URL assinada, o timestamp corresponde à hora atual. Nesse caso, aplica-se a seguinte fórmula: Tempo de expiração = Hora atual + Período de validade.

    Ao construir uma URL assinada com as regras de concatenação, especifique o timestamp. Por exemplo, se definir o timestamp como a hora atual mais 3.600 segundos, a fórmula aplicada será: Tempo de expiração = Hora atual + 3.600 segundos + Período de validade. Se definir o timestamp como a hora atual, a fórmula será: Tempo de expiração = Hora atual + Período de validade.

  • rand: Número aleatório, geralmente 0.

    Para garantir que cada URL gerada seja única, use o formato UUID para o número aleatório. O UUID não pode conter hifens (-). Exemplo: 477b3bbc253f467b8def6711128c7****.

  • uid: Parâmetro adicional, não utilizado atualmente, geralmente 0.

  • md5hash: String de verificação calculada pelo algoritmo MD5. Consiste em uma string de 32 caracteres composta por dígitos (0-9) e letras minúsculas do alfabeto inglês (a-z).

    Conteúdo criptografado

    sstring = "URI-timestamp-rand-uid-PrivateKey" 
    md5hash = md5sum(sstring)

    Por exemplo, se a URL de ingestão for rtmp://push.aliyundoc.com/app/stream, a string para criptografia será /app/stream-timestamp-rand-uid-Chave de autenticação do Domínio.

Como usar

Para usar URLs assinadas, ative o recurso de assinatura de URL para o seu nome de domínio. A assinatura de URL é ativada por padrão ao adicionar um nome de domínio pela primeira vez. Para obter mais informações, consulte Configure URL signing. Gere uma URL assinada no console do ApsaraVideo Live ou utilize as regras de concatenação. Para obter mais informações, consulte Generate ingest and streaming URLs.

Como funciona

Após a ativação da assinatura de URL, o servidor verifica uma solicitação executando as seguintes operações:

  1. O servidor verifica se o timestamp na solicitação é anterior à hora atual.

    • Se o timestamp for anterior à hora atual, o servidor considera que a URL assinada expirou e retorna o código de status HTTP 403.

    • Se o timestamp for posterior à hora atual, o servidor constrói uma string usando a seguinte fórmula sstring.

  2. O servidor calcula o valor de hash da string usando o algoritmo MD5 e o compara com o valor contido na solicitação.

    • Se os dois valores forem iguais, a autenticação será bem-sucedida e o servidor retornará o stream ao vivo.

    • Se os dois valores forem diferentes, a autenticação falhará e o servidor retornará o código de status HTTP 403.

O HashValue é derivado da seguinte string:

sstring = "URI-timestamp-rand-uid-PrivateKey"
HashValue = md5sum(sstring)

Exemplo

  • Premissas:

    1. Uma solicitação é feita para o objeto rtmp://demo.aliyundoc.com/video/standard**** usando req_auth.

    2. A chave criptográfica foi definida como aliyunliveexp1234, que corresponde à chave primária ou secundária configurada no console do ApsaraVideo Live.

    3. A hora de geração da URL assinada é 16:49:57 em 28 de maio de 2021 (UTC+8).

    4. No console, o período de validade da URL assinada está definido como 40 minutos.

    5. Os campos rand e uid foram definidos como 0.

  • Resultado:

    1. O timestamp UNIX calculado da URL assinada é 1622194197, correspondente a 17:29:57 em 28 de maio de 2021 (UTC+8).

    2. O servidor constrói uma string de assinatura usada para calcular o valor de hash.

      /video/standard-1622194197-0-0-aliyunliveexp1234

    3. O servidor calcula o valor de hash com base na string de assinatura.

      HashValue = md5sum("/video/standard-1622194197-0-0-aliyunliveexp1234") = 5552ff52b5e4e20387c6dc18afce****

    4. A URL da solicitação é rtmp://demo.aliyundoc.com/video/standard****?auth_key=1622194197-0-0-5552ff52b5e4e20387c6dc18afce****

      Nota

      O campo auth_key indica o token de acesso incluído na URL assinada.

    5. O HashValue calculado corresponde ao valor md5hash = 5552ff52b5e4e20387c6dc18afce**** presente na solicitação do usuário. A autenticação é bem-sucedida.

Notas de uso

  • A assinatura de URL vem ativada por padrão. Recomendamos manter esse recurso ativo para evitar a pirataria do seu conteúdo. Caso deseje desativar a assinatura de URL, certifique-se de compreender os riscos de uso não autorizado dos seus recursos e concorde com o Aviso Legal para Desativação da Assinatura de URL na página URL Signing no console do ApsaraVideo Live.

  • Defina manualmente o campo auth_key. O ApsaraVideo Live não fornece nenhuma operação de API para calcular o valor desse campo.

  • Após ativar a assinatura de URL, adicione o campo auth_key às URLs de ingestão e streaming. Caso contrário, os streams ao vivo não poderão ser reproduzidos. Não é possível assinar apenas a URL de ingestão ou apenas a URL de streaming; ambas devem ser assinadas.

  • As URLs assinadas permanecem válidas até o timestamp de expiração. Acesse uma URL assinada a qualquer momento antes que ela expire. O ApsaraVideo Live não oferece suporte a URLs assinadas de uso único.

  • O valor do campo auth_key corresponde ao valor MD5 da URI sem os campos queryString. Para obter mais informações, consulte a seção anterior sobre a definição de parâmetros de assinatura de URL. As URIs tanto das URLs de ingestão quanto das de streaming seguem o formato AppName/StreamName. Se a URL de ingestão não for confidencial, defina um timestamp de expiração o mais próximo possível do momento atual. Isso evita acessos maliciosos à URL de streaming.

  • Para URLs de ingestão e streaming nos formatos Real-Time Messaging Protocol (RTMP), FLV e Real-Time Streaming (RTS), as solicitações são autenticadas apenas no início da ingestão ou do streaming. A ingestão ou o streaming em andamento não será interrompido se a URL assinada expirar durante o processo.

  • No caso de URLs de streaming no formato M3U8, as solicitações são autenticadas no início e durante a transmissão. O streaming em andamento será interrompido se a URL assinada expirar durante o processo.

  • Para controlar dinamicamente o período de validade das URLs assinadas, utilize o SDK relevante para especificar dinamicamente os parâmetros AppName e StreamName. Para obter mais informações, consulte Sample code for URL signing.

  • Escolha uma estratégia de geração de auth_key com base nos seus requisitos de segurança e reutilização. Se controles de segurança rigorosos não forem necessários e for possível reutilizar a URL de streaming durante seu período de validade, use um auth_key pré-gerado com um período de validade maior, como um timestamp definido para a hora atual mais 7.200 segundos. Para controlar o acesso a solicitações individuais ou reduzir o risco de divulgação da URL, gere o auth_key em tempo real para cada solicitação com um curto período de validade, como um timestamp definido para a hora atual mais 300 segundos. Como as URLs de streaming M3U8 são autenticadas continuamente durante a transmissão, gere o auth_key em tempo real e evite que ele expire durante a reprodução.

  • Em dispositivos de ingestão com IP fixo, como câmeras cuja configuração não pode ser atualizada remotamente, pode ocorrer uma desconexão do stream se o período de validade da assinatura expirar. Recomendamos equilibrar segurança e disponibilidade ao definir o período de validade ou utilizar uma lista de permissões de IP de ingestão em vez da assinatura de URL.

  • Para o ApsaraVideo Real-Time Communication (ARTC), ative a assinatura de URL ao utilizá-lo em ambiente de produção para evitar o roubo de recursos e custos adicionais. Desative temporariamente a assinatura de URL apenas para testes de reprodução, garantindo assim a acessibilidade da URL.

  • Defina a chave primária de um domínio de ingestão e a chave primária de um domínio de streaming com o mesmo valor. Isso não afeta a assinatura de URL para as URLs de ingestão e streaming, nem a ingestão e reprodução normais de streams. Como prática recomendada, utilize uma chave primária com pelo menos 16 caracteres. O console do ApsaraVideo Live rejeita chaves primárias com menos de 8 caracteres e exibe uma mensagem de risco de segurança.

Perguntas frequentes

Altas taxas de tráfego são geradas sem streams ativos ou após a interrupção do service

Causa

Se a autenticação de URL estiver desativada para um nome de domínio, pode ocorrer hotlinking malicioso das URLs de ingestão e streaming. Atacantes podem puxar streams combinando o nome de domínio, AppName e StreamName, resultando em alto consumo de tráfego.

Solução

  1. Ative a autenticação de URL para os domínios de ingestão e streaming a fim de evitar o uso não autorizado das suas URLs.

  2. No console do ApsaraVideo Live, desative e exclua nomes de domínio que não estejam mais em uso. Desconecte streams ativos para interromper o consumo de tráfego.

  3. Configure o monitoramento de largura de banda de pico e alertas do CloudMonitor para detectar tráfego incomum.

Como configurar os parâmetros push_auth_key e pull_auth_key quando a assinatura de URL não está ativada?

Se a assinatura de URL não estiver ativada para o seu domínio, as URLs de ingestão e streaming não exigem parâmetros de autenticação. No seu source, deixe os parâmetros push_auth_key e pull_auth_key vazios ou não os configure. O service funciona normalmente sem esses parâmetros.

Como resolver o erro de $matches[4] ausente ao usar a demonstração PHP para gerar tokens de acesso?

Não exclua diretamente a linha de source $args = $matches[4], pois a lógica subsequente depende dessa variável para determinar o símbolo de concatenação (? ou &). A abordagem correta é manter a instrução de atribuição e definir $args como uma string vazia quando $matches[4] não existir. Isso garante que o formato do token de acesso esteja correto e evita erros de sintaxe. Exemplo:

$args = isset($matches[4]) ? $matches[4] : '';

A ativação ou desativação da assinatura de URL tem efeito imediato? É necessário reiniciar a ingestão de stream?

  1. A ativação ou desativação da assinatura de URL entra em vigor imediatamente. Não há período de espera.

  2. Se você ativar a assinatura de URL e a sessão de ingestão atual não for interrompida, mantendo-se inalterados o AppName e o StreamName, não será necessário reiniciar a ingestão de stream. Apenas as novas URLs de ingestão e streaming geradas precisarão incluir o parâmetro de autenticação.

  3. Caso a ativação da assinatura de URL afete seus negócios, desative-a a qualquer momento na página URL Signing no console do ApsaraVideo Live. Após a desativação, o acesso normal ao stream ao vivo é retomado imediatamente.

Por que pequenas quantias de taxas de tráfego ainda são geradas quando um erro 403 é retornado após a ativação da assinatura de URL?

Causa

Embora uma solicitação não autorizada seja bloqueada e um erro HTTP 403 seja retornado, o nó de borda da CDN ainda precisa processar e interagir com a solicitação. Isso gera uma pequena quantidade de faturamento baseado em solicitações ou taxas de tráfego de interação do nó de borda.

Solução e prevenção

Recomendamos ativar a assinatura de URL tanto para o domínio de ingestão quanto para o domínio de streaming. Isso minimiza as taxas geradas por solicitações anômalas na origem.