Skip to main content

Dois tokens, não um

Ler o estado do gateway não deve carregar a capacidade de parar um fornecedor. Um dashboard, uma sonda de monitoramento ou um painel só de leitura recebe smsg.ops.token e consegue ver estado de bind, profundidades de fila e throughput; não consegue desabilitar nada.
smsg.ops.admin.token não definido, ou definido como a mesma string do token de leitura, desabilita os verbos de controle e eles respondem 404. Definir os dois com o mesmo valor não “simplifica” a configuração. Desliga os controles.

Não definido significa desabilitado, não aberto

Não definido significa desabilitado e respondendo 404, não sem autenticação. Um token errado recebe o mesmo 404 que um endpoint desabilitado, em vez de um 401, então nada anuncia que existe um segredo aqui valendo a pena adivinhar.
O custo dessa escolha: um dashboard reportando 404 deve ser lido como “cheque o token dos dois lados” antes de “o gateway está fora”. O gateway não consegue distinguir os dois casos para o chamador, nem o CLI, então ambos reportam as possibilidades em vez de chutar.

Por que não fica sob /secure

Esse prefixo é autenticado com credenciais de mensagens, que pertencem a clientes. Os dados aqui — estado de bind, profundidades de fila, nomes de fornecedores — são do gateway inteiro, e nenhuma credencial de cliente deve alcançar isso. O endpoint vive na interface de management, porta 9000 por padrão, longe da porta que carrega mensagens.
Apontar o GATEWAY_API_URL do painel de controle para esta porta resulta em 404s em toda chamada do playground, e apontar GATEWAY_OPS_URL para a porta de mensagens resulta em 404s em toda leitura de health. As duas portas carregam coisas diferentes e não compartilham nenhum path.
Veja Management API para os endpoints em si, e Tokens e acesso para como distribuí-los.