Sign inGet started

Exigir conexões autorizadas

A chave do app é pública. Qualquer pessoa que consiga carregar sua página pode usá-la para abrir uma conexão e se inscrever em canais públicos.
Conexões autorizadas exigem que cada nova conexão prove estar autorizada em até 30 segundos. O edge do Realtime fecha conexões que não autorizam a tempo.

Exigir conexões autorizadas

Ative Authorized connections para o app na página Realtime apps. Você também pode definir authorized_connections como true pela API do Realtime. A configuração se aplica a todas as conexões que usam uma das chaves do app.
Atualize os clientes para autorizar antes de ativar a configuração em produção. Conexões estabelecidas antes da ativação permanecem abertas, mas conexões posteriores de clientes mais antigos falham após o tempo limite de autorização.

O que conta como autorizado

Uma nova conexão começa não autorizada. Qualquer uma destas ações a autoriza:
  • Uma inscrição em canal privado ou de presença é bem-sucedida. O cliente envia o ID da conexão para o seu authEndpoint, seu backend o assina e o edge verifica a assinatura. Veja Autorizando canais.
  • signin() é bem-sucedido. O cliente envia o ID da conexão para o seu memberAuthEndpoint e recebe uma identidade de membro assinada. Veja Encerrando conexões de membros para o fluxo completo de sign-in.
Ambas as rotas provam a mesma coisa: algo que possui o segredo do app atestou esta conexão. Inscrever-se em um canal público não prova nada e não autoriza nada.

O caso de canais apenas públicos

Um cliente que se inscreve apenas em canais públicos normalmente não contata seu backend. Depois de exigir conexões autorizadas, chame signin() para que a conexão possa autorizar sem uma inscrição privada:
import { BirdRealtime } from "@messagebird/realtime";

const bird = new BirdRealtime({
  appKey: "your-app-key",
  region: "us1",
  memberAuthEndpoint: "/bird/auth/member",
});

await bird.signin();

const status = bird.subscribe("build-status");
status.bind("build-finished", (data) => render(data));
Chame signin() uma vez. O cliente faz sign-in novamente após cada reconexão porque a identidade pertence à conexão. Retorne 403 Forbidden do seu endpoint de autorização de membro quando o chamador não deve se conectar.
Se o app se inscreve em um canal privado ou de presença ao carregar, a inscrição bem-sucedida já autoriza a conexão.

O que o cliente vê quando não autoriza

O edge fecha a conexão com o código 4009 e o motivo Connection not authorized within timeout. Os clientes não tentam novamente códigos nessa faixa, então a conexão entra no estado failed.
bird.connection.bind("error", ({ code, message }) => {
  if (code === 4009) console.warn(message);
});
O código 4009 também identifica um membro cujas conexões seu backend encerrou. Verifique o motivo antes de escolher um estado de login ou desconectado. Veja Encerrando conexões de membros e Ciclo de vida da conexão e reconexão.
Conexões não contam para a cota de conexões do app até serem autorizadas.

Escopo da autorização

Exigir conexões autorizadas controla quem pode manter uma conexão aberta. Isso não substitui verificações de autorização nem altera quem pode ler um canal:
  • Um canal público continua público para todas as conexões autorizadas. Se os eventos pertencem a um cliente específico, use um canal privado e verifique o nome do canal no seu endpoint.
  • Qualquer pessoa que seus próprios endpoints de autenticação assinem está autorizada, então um endpoint permissivo distribui autorização tão livremente quanto a chave do app fazia.

Próximos passos