O ApsaraVideo Live oferece suporte à autenticação de callback para ingestão de fluxo, gravação, snapshot e recuperação de desastres de fluxo duplo. Quando a autenticação de callback está ativada, o ApsaraVideo Live adiciona parâmetros de autenticação aos cabeçalhos das requisições HTTP(S) de callback. Assim, o servidor receptor pode verificar a assinatura e o timestamp para rejeitar requisições não autorizadas ou inválidas.
Parâmetros de autenticação
A autenticação de callback adiciona os seguintes parâmetros aos cabeçalhos das requisições HTTP(S):
|
Parâmetro |
Descrição |
|
ALI-LIVE-TIMESTAMP |
Timestamp UNIX, em segundos, do momento de início da requisição de callback. |
|
ALI-LIVE-SIGNATURE |
String de assinatura MD5 com 32 caracteres. Consulte a seção a seguir para obter o método de cálculo. |
Algoritmo de assinatura
O cálculo de ALI-LIVE-SIGNATURE utiliza os seguintes campos:
|
Campo |
Exemplo |
Descrição |
|
Domínio |
|
O domínio varia conforme o tipo de callback:
|
|
ALI-LIVE-TIMESTAMP |
|
Timestamp UNIX, em segundos, do momento de início da requisição de callback. |
|
NotifyAuthKey |
|
Chave de autenticação configurada. |
Concatenação
Concatene os três campos com uma barra vertical (|) como separador e calcule o valor MD5.
MD5Content = Domain|ALI-LIVE-TIMESTAMP|NotifyAuthKey
ALI-LIVE-SIGNATURE = md5sum(MD5Content)
Exemplo de cálculo
ALI-LIVE-SIGNATURE = md5sum(learn.aliyundoc.com|1519375990|yourkey)
Verificação pelo servidor receptor
O servidor receptor de callbacks valida as requisições da seguinte forma:
Verificação de assinatura
Identifique o domínio de callback com base no tipo de callback, conforme descrito no campo Domínio da tabela do algoritmo de assinatura.
Concatene o domínio de callback, o valor de ALI-LIVE-TIMESTAMP e a NotifyAuthKey com uma barra vertical (
|) como separador.Calcule o valor MD5 da string concatenada.
Compare o resultado com o valor do cabeçalho
ALI-LIVE-SIGNATURE. Se não houver correspondência, rejeite a requisição.
Verificação de timestamp
Obtenha a hora atual e calcule a diferença em relação ao valor de ALI-LIVE-TIMESTAMP. Caso a diferença exceda o limiar configurado, rejeite a requisição.
Recomenda-se uma tolerância de 5 minutos. Diferenças de relógio entre servidores podem causar discrepâncias de tempo. Uma tolerância muito curta pode rejeitar callbacks legítimos atrasados por latência de rede. A ativação dessa verificação é opcional.
Considerações
A autenticação de callback é opcional, mas recomendada. Após definir uma NotifyAuthKey, as requisições de callback passam a incluir os cabeçalhos de assinatura. A verificação dessas assinaturas pelo servidor receptor fica a seu critério. Definir uma NotifyAuthKey não afeta a funcionalidade existente de callback. Sem essa configuração, os callbacks continuam funcionando normalmente.
Uma nova NotifyAuthKey entra em vigor somente após a reingestão do fluxo. Os callbacks de uma sessão de ingestão em andamento ainda utilizam a NotifyAuthKey anterior.