NIP-42: Autenticação de clientes em relays
NIP-42 define como clientes se autenticam em relays. Relays podem exigir autenticação para aplicar controle de acesso, prevenir abuso ou implementar serviços de relay pagos.
Como funciona
O fluxo de autenticação começa quando um relay envia uma mensagem AUTH ao cliente. Essa mensagem contém uma challenge string que o cliente precisa assinar. O cliente cria um evento de autenticação kind 22242 contendo a challenge e o assina com sua chave privada. O relay verifica a assinatura e a challenge e então concede acesso.
{
"kind": 22242,
"tags": [
["relay", "wss://relay.example.com"],
["challenge", "random-challenge-string"]
],
"content": "",
"pubkey": "<client_pubkey>",
"created_at": 1736784000,
"sig": "<signature>"
}
A challenge previne ataques de replay. A URL do relay nas tags impede que o mesmo evento assinado seja reutilizado em relays diferentes.
Notas de protocolo
A autenticação tem escopo de conexão. Uma challenge permanece válida pela duração da conexão, ou até que o relay envie uma nova. O evento assinado é efêmero e não deve ser transmitido como um evento normal.
A spec também define prefixos de erro legíveis por máquina. auth-required: significa que o cliente ainda não se autenticou. restricted: significa que ele se autenticou, mas aquela pubkey ainda não tem permissão para a ação solicitada.
Casos de uso
Relays pagos usam NIP-42 para verificar assinantes antes de conceder acesso. Relays privados a usam para limitar leitura ou escrita a pubkeys aprovadas. Ela também melhora rate limiting porque relays conseguem acompanhar comportamento por chave autenticada, e não apenas por endereço IP.
Combinada com metadados da NIP-11, clientes podem descobrir se um relay suporta NIP-42 antes de tentar queries protegidas. Na prática, o suporte ainda é desigual, então clientes precisam de fallback quando um relay anuncia NIP-42 mas lida incorretamente com eventos protegidos.
Fontes primárias:
- Especificação NIP-42 - autenticação de clientes em relays
Mencionado em:
- Newsletter #6: Relay Information Documents
- Newsletter #9: testes de status de relay no Marmot
- Newsletter #10: servidor Nostr MCP
- Newsletter #13: Relay AUTH começa a chegar a apps reais
Veja também: