Autenticação · modules/iam
Adapter pronto para produçãoBetterAuth,
atrás de um port.
O auth é a parte que um repo em branco publica inseguro. A UseDeploy conecta o BetterAuth dentro do bounded context de IAM atrás de um port tipado IAuthProvider — com o hasher argon2id recomendado pela OWASP, segundos fatores de primeira classe e sessões por cookie desde o dia um.
Um adapter, todos os métodos
createBetterAuth conecta o adapter de sessão Prisma, o hasher argon2id apoiado na API nativa de senhas do Bun, e os plugins de magic links, segundo fator e passkeys. O Google OAuth só liga quando seu client id/secret estão presentes.
1 return betterAuth({
2 database: prismaAdapter(prisma, { provider: 'postgresql' }),
3 emailAndPassword: { enabled: true, password: argon2Hasher },
4 socialProviders: cfg.google ? { google: cfg.google } : undefined,
5 plugins: [
6 magicLink({ sendMagicLink }),
7 twoFactor({ /* TOTP */ }),
8 passkey({ /* WebAuthn */ }),
9 ],
10 });
O que você tem no dia um
Hashing de senha com argon2id
O Bun traz argon2id no core — sem dependência de npm. É o padrão recomendado pela OWASP para aplicações novas.
Magic links
Sign-in sem senha via um delivery hook que encaminha para o provider de email configurado (ou loga o link em dev).
Segundo fator TOTP
O plugin de segundo fator registra apps autenticadores e controla o sign-in com um passo twoFactorRedirect.
Passkeys (WebAuthn)
O plugin de passkey registra autenticadores de plataforma contra o seu RP id / origin.
Google OAuth
O sign-in social liga quando GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET estão setados — o campo avatar é mapeado no schema do Prisma para que a criação social nunca falhe.
Sessões por cookie
As sessões são por cookie de ponta a ponta. O cliente envia as credenciais com withCredentials — sem bearer tokens no localStorage.
Referência de configuração
Variáveis de ambiente
BETTER_AUTH_SECRETobrigatóriamin 32 chars
BETTER_AUTH_URLobrigatóriathe server’s own URL
CORS_ORIGINSobrigatóriatrusted browser origins
GOOGLE_CLIENT_IDopcionalenables Google OAuth
GOOGLE_CLIENT_SECRETopcional
Onde ele vive
apps/server/src/modules/iam/infrastructure/auth/better-auth.adapter.tsapps/server/src/modules/iam/application/ports/auth-provider.ts
Não deixe seu agente escrever o auth do zero.
Comece com 2FA, passkeys, magic links e OAuth já conectados atrás de um port tipado — a parte que um repo em branco publica quebrada.