Sign inGet started

Requerir conexiones autorizadas

La clave de app es pública. Cualquiera que pueda cargar tu página puede usarla para abrir una conexión y suscribirse a canales públicos.
Las conexiones autorizadas requieren que cada nueva conexión demuestre estar autorizada en un plazo de 30 segundos. El edge de Realtime cierra las conexiones que no se autorizan a tiempo.

Requerir conexiones autorizadas

Activa Authorized connections para la app en la página de Realtime apps. También puedes establecer authorized_connections en true a través de la API de Realtime. El ajuste se aplica a cada conexión que use una de las claves de la app.
Actualiza los clientes para que se autoricen antes de activar el ajuste en producción. Las conexiones establecidas antes de activarlo permanecen abiertas, pero las conexiones posteriores de clientes más antiguos fallan tras el tiempo de espera de autorización.

Qué cuenta como autorizado

Una conexión nueva comienza no autorizada. Cualquiera de estas acciones la autoriza:
  • Una suscripción privada o de presencia tiene éxito. El cliente envía el ID de conexión a tu authEndpoint, tu backend lo firma y el edge verifica la firma. Consulta Autorización de canales.
  • signin() tiene éxito. El cliente envía el ID de conexión a tu memberAuthEndpoint y recibe una identidad de miembro firmada. Consulta Terminación de conexiones de miembros para el flujo completo de inicio de sesión.
Ambas rutas demuestran lo mismo: algo que posee el secreto de la app avaló esta conexión. Suscribirse a un canal público no demuestra nada y no autoriza nada.

El caso de solo canales públicos

Un cliente que solo se suscribe a canales públicos normalmente no contacta tu backend. Después de requerir conexiones autorizadas, llama a signin() para que la conexión pueda autorizarse sin una suscripción 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));
Llama a signin() una sola vez. El cliente inicia sesión de nuevo tras cada reconexión porque la identidad pertenece a la conexión. Devuelve 403 Forbidden desde tu endpoint de autorización de miembros cuando el solicitante no deba conectarse.
Si la app se suscribe a un canal privado o de presencia al cargarse, la suscripción exitosa ya autoriza la conexión.

Qué ve el cliente cuando no se autoriza

El edge cierra la conexión con el código 4009 y el motivo Connection not authorized within timeout. Los clientes no reintentan códigos en este rango, así que la conexión entra en el estado failed.
bird.connection.bind("error", ({ code, message }) => {
  if (code === 4009) console.warn(message);
});
El código 4009 también identifica a un miembro cuyas conexiones tu backend terminó. Revisa el motivo antes de elegir un estado de inicio de sesión o de sesión cerrada. Consulta Terminación de conexiones de miembros y Ciclo de vida de la conexión y reconexión.
Las conexiones no cuentan para la cuota de conexiones de la app hasta que se autorizan.

Alcance de la autorización

Requerir conexiones autorizadas controla quién puede mantener una conexión abierta. No reemplaza las verificaciones de autorización ni cambia quién puede leer un canal:
  • Un canal público sigue siendo público para cada conexión autorizada. Si los eventos pertenecen a un cliente, usa un canal privado y verifica el nombre del canal en tu endpoint.
  • Cualquiera para quien tus propios endpoints de autenticación firmen queda autorizado, así que un endpoint permisivo otorga autorización tan libremente como lo hacía la clave de app.

Próximos pasos