Chaves de API
Onde a credencial S2S com que o backend de um casino se autentica é emitida e revogada.
Casino → Chaves de API. Ler a lista custa apikeys.read; emitir e revogar custam
apikeys.write.
Emitindo
Escolha um rótulo e os escopos. O rótulo é para pessoas, então faça ele nomear o consumidor ("serviço de pedidos") em vez do casino, que já está implícito. Você vai precisar dele para distinguir duas chaves depois.
| Escopo | Concede |
|---|---|
games:read | Ler o catálogo |
battles:read | Ler batalhas |
battles:write | Abrir e gerenciar batalhas |
bots:write | Sentar bots |
viewer:mint | Emitir tokens de viewer |
demo:mint | Emitir uma sessão de jogo demo. Só avaliação, nunca o fluxo de produção |
bots:write é separado de battles:write e é o mais esquecido. Sentar bots gasta as sessões de
provedor do próprio casino, o que é um ato diferente de abrir um lobby. Uma chave sem ele só
falha quando alguém tenta encher a mesa, o que é tarde.
O texto puro é mostrado uma vez
sbk_0a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f9
Só o hash SHA-256 é armazenado, mais os 12 primeiros caracteres para exibição. Não há como mostrar de novo: perder significa emitir uma substituta e revogar a antiga.
Entregue por algo que não seja histórico de chat.
Rotacionando
Não há rotação no lugar. A ordem importa:
- Emita a substituta.
- Faça o deploy dela no consumidor.
- Só então revogue a antiga.
Revogar primeiro significa indisponibilidade por todo o tempo do deploy.
Uma chave por consumidor
Revogar uma chave compartilhada entre serviços derruba todos eles de uma vez. Emita separadamente e com escopo estreito, para uma chave comprometida custar um serviço em vez do casino.
A revogação é imediata
Não há cache na frente da consulta de chaves, então não há nada para esperar, nem mesmo a janela de 30 segundos que a allowlist de jogos pode ter.
Tudo é atribuído
Emitir e revogar registram quem fez, como o endereço do ator na época, capturado em vez de guardado como chave estrangeira para a tabela de usuários.
Uma chave estrangeira faria cascade ou viraria nula quando aquele usuário fosse apagado, apagando o registro.
O ator sempre vem da sessão, nunca do corpo da requisição. Nomear um no payload é 400.
CLI / unknown não é bugUma chave que o seu host emitiu fora do console não tem operador logado, então o console
renderiza CLI / unknown em vez de uma célula vazia, que pareceria falha de renderização.
Chaves que você emite pelo console levam o seu nome.
Checklist para entregar uma chave
- Os escopos batem com o que vão de fato fazer, incluindo
bots:writese usarem bots - O rótulo nomeia o consumidor, não o casino
- Entregue de forma segura, uma vez
- Eles sabem que ela não pode ser recuperada
- Eles sabem que ela nunca pode chegar a um browser