Integração com Supabase Auth
A Switchbord usa o Supabase Auth como sua base de autenticação. Todas as sessões de usuário são gerenciadas por meio do sistema de sessão baseado em JWT do Supabase, com validação no servidor em cada requisição de API.A autenticação é aplicada no nível da rota de API. Toda rota começa com a validação de sessão antes da execução de qualquer lógica de negócio.
Gestão de Sessão
Janela de Tempo da Sessão
As sessões estão sujeitas a dois controles independentes de expiração:
Esses limites são configurados no Supabase e aplicados no servidor — estendê-los requer uma alteração de configuração administrativa, e não uma solução alternativa do lado do cliente.
Revogação de Sessão na Remoção de Membro
Quando um membro do workspace é removido, suas sessões ativas são imediatamente invalidadas em todos os dispositivos:'global' garante que todas as sessões do usuário sejam encerradas — não apenas a atual. Isso impede que um membro removido continue usando uma sessão existente após perder o acesso ao workspace.
Política de Senhas
A Switchbord impõe os seguintes requisitos de senha, configurados no Supabase:- Mínimo de 12 caracteres
- Ao menos uma letra maiúscula
- Ao menos um dígito
- Aplicado no cadastro e na alteração de senha
Autenticação Multifator
O MFA TOTP (Time-based One-Time Password) do Supabase está disponível para todos os usuários. Os usuários podem cadastrar um aplicativo autenticador a partir das configurações da sua conta.Controle de Acesso Baseado em Papéis (RBAC)
A Switchbord implementa quatro papéis com níveis de permissão distintos. A atribuição de papéis é gerenciada por owners e admins do workspace.Hierarquia de Papéis
Aplicação de Papéis
As verificações de papel são realizadas em cada rota de API após a resolução do contexto de workspace:requireSettingsAccess define os papéis mínimos exigidos. Rotas cujo papel não esteja na lista receberão uma resposta 403.
Referência de Capacidades por Papel
Gestão de Chaves de API
Ciclo de Vida da Chave
As chaves de API permitem o acesso programático à API da Switchbord. Cada chave é:- Gerada com um valor criptograficamente aleatório
- Hasheada com SHA-256 antes do armazenamento — o texto puro é exibido uma única vez na criação
- Escopada ao workspace criador — não pode ser usada para acessar outros workspaces
- Opcionalmente expirável —
expires_até aplicado no momento da validação
Comparação com Timing Seguro
A validação de chaves de API usacrypto.timingSafeEqual para evitar ataques de canal lateral baseados em tempo (timing side-channel):
Aplicação da Expiração de Chave
Chaves com um valorexpires_at são rejeitadas no momento da validação, mesmo que o hash corresponda: