====== Stream Auth ====== O Stream Auth é um script desenvolvido em Python para autenticação e gerenciamento de transmissões ao vivo no servidor. Ele também faz o gerenciamento das chaves de transmissão dos usuários, garantindo que apenas pessoas autorizadas possam iniciar e manter transmissões. ====== Como Transmitir ====== - Entre no [[http://alice.ufsj.edu.br/~carneiro/stream_key|link]], faça login com sua conta e obtenha a chave de transmissão - No OBS, entre nas configurações, e vá na aba **Transmissão** - No campo **serviços**, selecione **Personalizado...** - No campo **servidor**, preencha com ''[[rtmp://alice.dcomp.ufsj.edu.br:33000/live|rtmp://alice.dcomp.ufsj.edu.br:33000/live]]'' - No campo **Chave de Transmissão**, preencha com a chave de transmissão obtida anteriormente ====== Arquitetura ====== ===== Servidor RTMP ===== O módulo RTMP do NGINX é responsável por receber as transmissões ao vivo de clientes RTMP, como o OBS. O NGINX recebe a transmissão e faz uma requisição HTTP para o script, que realiza a autenticação através da chave de transmissão fornecida. ===== Chaves de transmissão ===== As chaves de transmissão são criadas com [[https://pt.wikipedia.org/wiki/JSON_Web_Token|JWTs]] através de parâmetros variáveis configurados no script. O JWT é gerado usando uma chave EC256, que pode ser alterada conforme necessário. O script para a geração de chaves está disponível no código fonte do projeto, em ''src/stream_auth/keys/generate_keys.sh.'' ===== Gerenciamento de usuários ===== O gerenciamento de usuários é feito através do [[ldap|LDAP]]. O script apenas valida se o usuário está no LDAP e, caso seja o primeiro login dele no script, uma chave de transmissão é criada e retornada ao cliente. Se o usuário já tiver logado antes, o script apenas envia a chave de transmissão existente. As chaves dos respectivos usuários são salvas em um arquivo JSON gerenciado pela biblioteca TinyDB do Python.