Pular para o conteúdo
Todos os artigos
5 min de leitura

A autenticação SaaS é mais do que um formulário de login

Segue a identidade através de sessões, propriedade de workspace, ações protegidas e logout — as partes que um ecrã de login bonito não prova.

a equipa supastack

Deixa um sistema possuir a identidade

O formulário de login recolhe um pedido. O sistema de autenticação decide se esse pedido estabelece uma identidade e emite a sessão em que o resto da aplicação confia. Manter essa responsabilidade num só lugar evita que cada rota invente a sua própria interpretação de um utilizador ligado.

O supastack compõe o Better Auth para identidade e gestão de sessões. O código da aplicação resolve a sessão em fronteiras protegidas e relaciona-a com um workspace. A interface pode mostrar estados de acesso úteis, mas o estado de cliente não deve tornar-se prova de que uma operação é autorizada.

A regra tem de valer em cada superfície que o produto entrega. Os clientes web, mobile e desktop devem consumir a mesma decisão de identidade em vez de a implementarem três vezes — três interpretações de «sessão iniciada» é de onde vêm os bugs de conta.

Escolhe os métodos de login deliberadamente

Cada método troca fricção por superfície de ataque e uma dependência externa. As palavras-passe precisam de fluxos de reposição e limitação de taxa. Magic links e códigos de uso único dependem da entregabilidade do email. O OAuth delega a identidade a fornecedores como Google, GitHub ou Apple — e herda as suas falhas, ecrãs de consentimento e regras de callback.

O supastack compõe-nos através do Better Auth — OTP por email, palavra-passe, magic link, OAuth, com dois fatores e passkeys disponíveis — atrás de uma única decisão de identidade. Entrega o conjunto mais pequeno de que a tua audiência realmente precisa; cada método adicional é outro caminho de callback, outro modo de falha e outro fluxo para verificar antes do lançamento. O guia de autenticação cobre a ligação.

Quando uma pessoa pode iniciar sessão de mais de uma forma, decide como os métodos se juntam. Uma conta Google e um magic link por email que resolvem para o mesmo endereço devem aterrar numa só identidade, não em duas. As regras de ligação de contas fazem parte da decisão de identidade, e errá-las cria utilizadores duplicados que surgem meses depois como dados misteriosamente em falta.

As sessões são a credencial que importa

Depois do login, a sessão — não a palavra-passe — é o que cada pedido transporta. As suas regras de expiração, armazenamento e invalidação definem a verdadeira postura de segurança. Uma sessão que sobrevive ao logout, ou uma que um membro removido do workspace continua a usar, é uma falha de autenticação que nenhum ecrã de login polido corrige.

Decide o ciclo de vida desde o início: quanto tempo vivem as sessões, se os utilizadores podem ver e revogar as suas sessões ativas, e o que uma mudança de palavra-passe, de email ou de workspace lhes faz. A gestão de sessões existe como módulo no kit precisamente porque estas decisões são fáceis de adiar e caras de acrescentar depois.

Relaciona a sessão com o registo pedido

Estar ligado não concede acesso a todos os registos. Resolve o workspace do utilizador no servidor e inclui esse limite em leituras e mutações. Um identificador de tarefa ou link de recuperação é uma referência ao trabalho, não uma permissão para o obter — o post sobre limites de workspace cobre esse lado da fronteira em detalhe.

Resolve o âmbito numa ordem fixa: autentica a sessão, carrega a adesão, depois lê ou escreve com esse contexto de workspace — nunca ao contrário. O middleware pode redirecionar um visitante anónimo, mas não pode autorizar a operação; a verificação pertence à ação de servidor ou ao handler de rota onde o registo é tocado.

As contas têm um ciclo de vida, não apenas um começo

O aprovisionamento é o primeiro teste dessa fronteira. Quando um utilizador se regista, o workspace e os registos de propriedade que se seguem têm de ser seguros de criar mais de uma vez — os hooks de ciclo de vida podem ser repetidos por fornecedores, retries ou ferramentas de suporte. Um evento duplicado deve ser um no-op, não uma organização duplicada.

O fim do ciclo de vida merece o mesmo cuidado. Mudanças de email, reposições de palavra-passe, remoção de membros, eliminação de conta e exportação de dados são cada um pequenos fluxos com os seus próprios casos de abuso — um link de reposição que funciona duas vezes, uma exportação que expõe registos de um colega. O supastack entrega exportação GDPR e gestão de sessões por esta razão; seja sobre o que construíres, orçamenta os fluxos aborrecidos.

Testa o ciclo de vida, incluindo o fim

Um teste de login bem-sucedido é útil mas incompleto. Exercita credenciais inválidas, códigos de verificação expirados ou reutilizados, pedidos anónimos e acesso entre workspaces. Verifica que terminar sessão invalida a sessão e que um cliente que regressa não pode continuar a usar um ecrã previamente autorizado para trabalho protegido.

Distingue testes de handler de aceitação em deployment. Um adaptador em memória pode estabelecer a semântica de um handler de auth real sem provar persistência Postgres ou um callback de fornecedor. Verifica o origin configurado, o caminho de callback, o restauro de sessão e o logout com as dependências deployed antes de afirmares que o fluxo completo de login funciona.

  • Credenciais inválidas e códigos de verificação expirados ou reutilizados são rejeitados.
  • Pedidos anónimos e entre workspaces não recebem dados protegidos.
  • O logout invalida a sessão — um cliente obsoleto não pode continuar a agir.
  • Os registos aprovisionados mantêm-se idempotentes quando os hooks de ciclo de vida repetem.
  • Os callbacks de fornecedor real funcionam no origin configurado — verificado, não assumido.

Perguntas frequentes de autenticação

As perguntas abaixo surgem quando o formulário de login está feito e o sistema tem de continuar a funcionar.

  • O middleware chega para proteger rotas? — O middleware é um redirecionamento conveniente, não uma camada de autorização. Cada ação de servidor e rota resolve a sessão e o workspace por si própria; guardas ao nível da página escondem ecrãs sem autorizar operações.
  • Construir a auth eu próprio ou usar uma biblioteca? — A semântica de sessões raramente é onde um SaaS se diferencia. Uma biblioteca mantida como o Better Auth atrás de limites de módulo claros dá-te primitivas testadas enquanto mantém as decisões que importam — delimitação, ciclo de vida — no teu código.
  • Como se relacionam sessões e workspaces? — A sessão identifica a pessoa; o workspace identifica os registos que ela pode tocar. Resolve a adesão no servidor em cada pedido e nunca confies num ID de workspace que o cliente envia.
  • O que esperam os clientes B2B da autenticação? — Workspaces de equipa com papéis, login OAuth, visibilidade e revogação de sessões, e um rasto de auditoria. Dois fatores e passkeys são cada vez mais esperados para papéis de admin.
  • O que parte a autenticação em produção? — Normalmente as pontas: um URL de callback que só existe localmente, um hook que aprovisiona duas vezes, uma sessão que sobrevive a uma adesão. Testa os fins dos fluxos, não apenas os começos.

Perguntas frequentes

14 perguntas

O que é o supastack?

O supastack é uma base modular para construir produtos SaaS com IA. Reúne a infraestrutura comum para que possas concentrar-te nas funcionalidades próprias do teu produto.

Suporta web e mobile?

Sim. O supastack inclui apps Next.js e Expo como pontos de partida para experiências web e mobile.

Que autenticação está incluída?

O Better Auth cobre email/palavra-passe, OTP e login social. Os workspaces pessoais são aprovisionados com a conta para que os registos fiquem delimitados desde o primeiro dia.

Como é suportada a IA?

O supastack inclui IA multi-fornecedor configurável, registo de utilização, orçamentos e suporte encriptado de chaves próprias (BYOK).

Como são geridas as subscrições?

Para produtos construídos sobre o kit, a faturação Stripe, as subscrições e as permissões formam a base do acesso pago. Os segredos de fornecedor ficam no servidor.

Onde vive o código próprio do meu produto?

As funcionalidades próprias do produto ficam num codebase separado, enquanto o produto configura e integra os módulos base do supastack.

Como funciona o preço do supastack?

O kit é uma compra única com atualizações vitalícias: Uma framework por 249 $ (preço de lançamento temporário — 100 $ de desconto sobre o preço normal de 349 $) ou Todas as frameworks (Next.js, iOS, Android) por 499 $ (preço de lançamento temporário — 100 $ de desconto sobre o preço normal de 599 $), mais 75 $ por lugar de programador adicional. Sem subscrição do kit. O checkout neste site entrega a tua chave de licença por email, com acesso ao repo por convite GitHub.

Como é que os workspaces delimitam os meus dados?

Os registos do utilizador são delimitados por workspaceId. Identidade, permissões, utilização de IA, eventos de faturação e entradas de auditoria ficam dentro do limite do workspace pessoal.

Como funcionam os jobs em segundo plano?

O Trigger.dev é o runtime de jobs explícito. O contrato JobRunner só promete enqueue, status e cancel — a semântica de workflow permanece específica e explícita do Trigger.dev.

Como difere o email da divulgação?

O email transacional cobre fluxos de produto como avisos de conclusão de tarefas. A divulgação fria e as campanhas pertencem ao próprio produto, fora do módulo de email deste kit.

Como funcionam as compras no aplicativo móvel?

O aplicativo móvel inclui compras nativas e restauração via RevenueCat, com acesso verificado pelo servidor. Configure as contas das lojas e conclua os testes em dispositivos antes de publicar. A cobrança web permanece separada.

Onde residem as chaves dos fornecedores de IA?

As credenciais BYOK são encriptadas e ficam no servidor. As chaves são higienizadas nos logs; a utilização e os orçamentos ficam visíveis ao nível do workspace.

Quais métodos de pagamento o checkout aceita?

O checkout hospedado na Stripe aceita cartões e também pode oferecer Alipay e WeChat Pay quando essas carteiras estiverem ativadas na conta Stripe — útil para compradores na China. As autorizações de carteira são confirmadas de forma assíncrona, então a página da licença é atualizada assim que o pagamento é liquidado.

Posso solicitar um reembolso?

Depois de obter acesso ao repositório, o supastack é seu para sempre, portanto não pode ser reembolsado. Mas fique tranquilo: você recebe o código-fonte completo com atualizações vitalícias para criar e lançar produtos ilimitados para você ou seus clientes. Você apenas não pode revender o código nem redistribuir o repositório como starter kit ou modelo.

PT