Pular para o conteúdo

HTTP Auth: Securetoken

O Middleware gera um token único para cada canal usando algoritmos criptográficos e o securetoken. A cada endereço de canal o Middleware acrescenta a informação de quando o acesso foi liberado, o tempo de expiração e o token para validar os dados fornecidos.

O Astra usa os mesmos algoritmos criptográficos e o mesmo securetoken para verificar os dados fornecidos e liberar o acesso ao canal.

O token temporário é calculado pelo middleware no lado do servidor quando o cliente solicita a playlist. O token contém as seguintes partes:

  1. Hash - hash calculado no servidor com o algoritmo SHA1
  2. Salt - palavra aleatória para mais segurança
  3. Tempo final - tempo de expiração do token no formato unix-timestamp
  4. Tempo inicial - tempo de criação do token no formato unix-timestamp

Todas as partes devem ser separadas por sinal de menos e adicionadas ao endereço do canal. Por exemplo: https://example.com:8100/tv/travel-channel/index.m3u8?token=e8bff06f373694dda657e8417fe76f6b54b69807-a5cd6c00-1669890000-1669810000

O hash deve ser calculado no middleware com o algoritmo SHA1 a partir de uma string formada pela concatenação das seguintes partes:

  • Channel ID - identificador único do canal nas configurações do Astra
  • Endereço IP do cliente
  • Tempo inicial - unix-timestamp como número decimal
  • Tempo final - unix-timestamp como número decimal
  • Securetoken - definido nas configurações do Astra
  • Salt - palavra aleatória para mais segurança

Crie um arquivo securetoken.php com o seguinte código:

<?php
$channel_path = '/tv/travel-channel/index.m3u8';
$channel_id = 'travel-channel';
$client_ip = '192.168.88.98';
$starttime = time() - 60;
$endtime = $starttime + 3600;
$securetoken = 'secret';
$salt = bin2hex(random_bytes(4));
$hash = sha1($channel_id . $client_ip . $starttime . $endtime . $securetoken . $salt);
$token = $hash . '-' . $salt . '-' . $endtime . '-' . $starttime;
echo 'https://example.com:8100' . $channel_path . '?token=' . $token . PHP_EOL;

Execute o script:

php securetoken.php

Você verá a linha do primeiro exemplo. Atenção: este script serve apenas como exemplo.