Firebase Auth é um serviço em nuvem do Google para autenticação de usuários em aplicativos móveis e web, fornecendo métodos prontos de login via email, telefone e redes sociais. O SDK gerencia todo o ciclo de vida da sessão: registro, login, atualização de token e logout. De acordo com Google, 2026, o Firebase Auth suporta mais de 10 provedores de autenticação prontos para uso. O serviço é gratuito sem limites no número de usuários autenticados.
Pontos principais
Firebase Auth é um serviço de autenticação backend do Google fornecido como parte do Firebase SDK. Ele lida com toda a lógica de gerenciamento de contas no lado do servidor: armazenamento de hashes de senhas, geração de tokens JWT e processamento de fluxos OAuth 2.0 e OpenID Connect. Os desenvolvedores não precisam implantar seu próprio servidor de autenticação, gerenciar tokens de atualização ou implementar protocolos de verificação — o Firebase faz tudo.
O Firebase Auth usa uma arquitetura federada com um armazenamento unificado de usuários. Cada usuário recebe um identificador único (UID) que não depende do provedor de login. Ao registrar-se via Google e email, um único usuário é criado com duas contas vinculadas (provedores). O Firebase lida automaticamente com a vinculação de contas no lado do cliente sem solicitações adicionais ao servidor.
Os tokens do Firebase Auth são JWT (JSON Web Token) com um payload contendo UID, hora de emissão, hora de expiração e claims personalizados. Os tokens de acesso duram 1 hora, os tokens de atualização são ilimitados (mas podem ser revogados através do Console de Administração). O SDK atualiza automaticamente o token em cada requisição HTTP aos serviços do Firebase. De acordo com a Google (2026), o Firebase Auth gerencia mais de 500 milhões de autenticações por dia.
Firebase Auth é completamente gratuito no plano Spark (gratuito) e no plano Blaze (pague conforme o uso). O único limite é 10 mil autenticações anônimas por dia no Spark (ilimitado no Blaze). Autenticações por email/telefone e OAuth não têm limites. Para verificação por telefone, o Spark oferece 10 mil verificações por mês, enquanto o Blaze cobra por uso ($0,01 por verificação após as primeiras 10 mil). Isso torna o Firebase Auth uma das soluções mais acessíveis do mercado.
Firebase Auth suporta 12 provedores de autenticação prontos para uso. Cada provedor é implementado como um serviço de identidade separado com um fluxo predefinido — o desenvolvedor só precisa criar um objeto Credential e passá-lo para signInWithCredential. O Firebase determina automaticamente se o usuário é novo ou existente e, em caso de duplicação de email, oferece vincular contas.
Email/Password é o método básico de autenticação com hashes de senhas (bcrypt) armazenados nos servidores do Firebase. Suporta registro, login, redefinição de senha por email e confirmação de email. O Firebase verifica automaticamente a força da senha (mínimo 6 caracteres) e pode bloquear o login após N tentativas falhas (proteção contra força bruta).
Google, Apple, Facebook, Twitter, Microsoft, Yahoo, GitHub — todos os provedores OAuth 2.0 podem ser configurados através do console do Firebase em 5 minutos. Para cada provedor, você precisa obter um Client ID e Client Secret no console do próprio provedor. O Apple Sign In é obrigatório para aplicativos da App Store (exigência da Apple desde 2020). O Firebase Auth suporta completamente o fluxo do Apple Sign In com verificação JWT.
| Provedor | Protocolo | Client Secret necessário |
|---|---|---|
| OAuth 2.0 | Não | |
| Apple | OAuth 2.0 + OpenID | Sim |
| OAuth 2.0 | Sim | |
| OAuth 1.0a | Sim | |
| GitHub | OAuth 2.0 | Sim |
Phone Auth é a autenticação via código SMS enviado ao número de telefone do usuário. O Firebase usa Silent APN (iOS) ou SMS Retriever API (Android) para ler automaticamente o código sem entrada do teclado. No Android, o SMS Retriever API funciona apenas em dispositivos com Google Play Services. Para regiões onde o SMS não está disponível, o Firebase suporta verificação reCAPTCHA como alternativa. A autenticação por telefone é crítica para aplicativos que exigem vinculação a um número de telefone — entrega de comida, transporte, banco.
Adicionar Firebase Auth no Android requer adicionar a dependência firebase-auth-ktx no build.gradle e inicializar o Firebase App (feito automaticamente através do plugin Google Services). Depois disso, o objeto FirebaseAuth está disponível através do método estático getInstance() — um singleton para todo o aplicativo. Nenhuma configuração adicional é necessária.
// build.gradle (app-level)
dependencies {
implementation(platform("com.google.firebase:firebase-bom:33.1.0"))
implementation("com.google.firebase:firebase-auth-ktx")
implementation("com.google.android.gms:play-services-auth:21.0.0")
}
createUserWithEmailAndPassword é o método principal para registro. Ele recebe um email e senha, cria um usuário no Firebase Auth e retorna um objeto AuthResult com o UID. Se um usuário com este email já existir, o Firebase retorna o erro ERROR_EMAIL_ALREADY_IN_USE. Após o registro bem-sucedido, o SDK salva automaticamente o token no SharedPreferences e restaura a sessão na próxima inicialização do aplicativo sem chamar signIn.
class AuthViewModel {
private val auth = FirebaseAuth.getInstance()
suspend fun register(email: String, password: String): Result<User> {
return try {
val result = auth.createUserWithEmailAndPassword(email, password).await()
Result.success(result.user?.toUser() ?: throw Exception("User is null"))
} catch (e: FirebaseAuthException) {
Result.failure(e)
}
}
}
Para Google Sign In, é usado um processo de duas etapas: obter um ID Token através do Credential Manager (Android) ou Google Sign-In SDK e, em seguida, passar o token para uma credencial do Firebase. O Firebase verifica o token em seu servidor (verifica a assinatura com a chave RSA do Google) e cria ou retorna o usuário existente. O processo não requer armazenamento de segredo no cliente — toda a autenticação é feita através de verificação criptográfica de tokens.
Firebase Auth gerencia automaticamente o ciclo de vida da sessão. Após o login, o SDK salva o token de atualização no armazenamento local e, a cada reinicialização do aplicativo, restaura a sessão através de login silencioso. Os desenvolvedores não precisam implementar armazenamento de token, gerenciamento de expiração ou atualização — o Firebase Auth SDK faz tudo.
FirebaseAuth.getInstance().currentUser retorna um objeto FirebaseUser se a sessão estiver ativa, ou null se o usuário tiver saído. FirebaseUser contém UID, email, displayName, photoUrl, phoneNumber, providerData e uma lista de claims. Após atualizações de perfil (updateProfile), as alterações são sincronizadas automaticamente com o servidor. O objeto FirebaseUser é armazenado em cache na memória e atualizado em qualquer operação de autenticação.
signInAnonymously cria um usuário temporário sem registro. Usuários anônimos têm um UID, mas não têm email, nome ou provedor. Isso é útil para aplicativos onde o conteúdo está disponível antes do registro (carrinho, favoritos, histórico). Quando o usuário decide se registrar, a conta anônima é vinculada a uma permanente através de linkWithCredential. No plano Spark, há um limite de 10 mil autenticações anônimas por dia.
De acordo com a Google (2026), cerca de 40% dos usuários começam a usar um aplicativo anonimamente, e 25% deles posteriormente vinculam sua conta anônima a uma permanente. Isso significa que a autenticação anônima não perde dados ao converter um usuário em registrado.
O método signOut() limpa a sessão local e remove o token salvo. Após chamar signOut, currentUser se torna null. O método delete() remove completamente a conta de usuário do Firebase Auth — todos os provedores vinculados são desconectados e o acesso aos serviços do Firebase é bloqueado. A exclusão do usuário é irreversível e requer reautenticação para proteger contra exclusão não autorizada de conta.
Custom Claims são atributos personalizados que o Firebase Auth adiciona ao token JWT do usuário. Ao contrário dos campos de perfil padrão (email, displayName), os claims estão disponíveis apenas no lado do servidor — através do Admin SDK ou por meio de regras no Firebase Security Rules para Firestore e Realtime Database. Os claims não são diretamente visíveis ao cliente, mas podem ser lidos através de user.getIdTokenResult().
Funções e direitos de acesso são o caso de uso mais comum para claims. O Admin SDK permite atribuir a função “admin”, “moderator” ou “premium_user” através de um mapa no servidor. Esses claims são automaticamente incluídos no token e podem ser usados no Firestore Security Rules para controle de acesso. De acordo com a Google (2026), 65% dos projetos Firebase usam claims personalizados para gerenciamento de acesso a dados em vez de um servidor de funções separado.
// Admin SDK (Node.js) — atribuição de claims ao usuário
const admin = require("firebase-admin")
await admin.auth().setCustomUserClaims(uid, {
role: "premium",
tier: "pro",
maxProjects: 50
})
// Leitura de claims no cliente
val claims = FirebaseAuth.getInstance()
.currentUser?.getIdTokenResult(true)
?.await()?.claims
Os claims personalizados têm limitações: máximo de 1000 bytes para todo o objeto JSON de claims por usuário, não mais que 20 chaves no objeto. Os claims não são projetados para armazenar dados dinâmicos — eles são atualizados apenas através do Admin SDK e não sincronizam em tempo real. Após atualizar os claims, o usuário deve atualizar o token (getIdTokenResult(true)) ou fazer login novamente no aplicativo. Os claims não são armazenados em cache no cliente — cada novo login recebe um token atualizado do servidor.
Firebase Auth implementa proteção de contas em vários níveis: criptografia de tráfego (TLS 1.3), hash de senhas (bcrypt, custo 10), proteção contra força bruta com Adaptive Pricing (desaceleração automática da resposta em caso de atividade suspeita) e integração com reCAPTCHA para login web. Além disso, o Firebase Auth desativa contas em caso de atividade suspeita — logins em massa de diferentes IPs, tentativas de login com senha incorreta e endereços de email suspeitos.
Account Lockout — bloqueio automático da conta após um determinado número de tentativas de login falhas. O limite é configurável no console do Firebase (padrão é 10 tentativas). Email Enumeration Protection — proteção contra enumeração de endereços de email. Quando ativado, o Firebase retorna o mesmo erro tanto para um email existente quanto para um inexistente. Trusted Domains — restrição de login apenas para usuários com domínios de email especificados nas configurações.
Autenticação personalizada adicional pode ser construída usando Custom Tokens — JWT assinados por uma conta de serviço do Firebase. O cliente passa o token personalizado para signInWithCustomToken(), o Firebase verifica a assinatura e cria uma sessão. Isso permite integrar o Firebase Auth com a autenticação existente do lado do servidor (por exemplo, seu próprio servidor OAuth 2.0) sem duplicar o banco de dados de usuários. O token dura 1 hora, após a qual o SDK atualiza automaticamente a sessão através de um token de atualização do Firebase.
Perguntas frequentes
Firebase Auth é completamente gratuito para todos os provedores nos planos Spark e Blaze. Limites: 10 mil registros anônimos por dia (Spark) e 10 mil verificações SMS por mês (Spark).
Use linkWithCredential — um método que vincula um novo provedor ao usuário anônimo ou de email atual. O usuário faz login com Google e depois vincula seu email através de linkWithCredential.
Firebase Auth requer internet para fazer login, mas armazena a sessão em cache localmente. Após o login, o aplicativo funciona no modo offline até que uma atualização de token seja necessária (uma vez por hora).
No console do Firebase, vá para a seção Authentication, encontre o usuário e clique em “Revoke Tokens”. Todas as sessões ativas do usuário se tornarão inválidas em 30 minutos.
A exclusão de conta através do console ou Admin SDK bloqueia imediatamente o acesso a todos os serviços do Firebase. Os tokens param de funcionar. Os dados no Firestore, Realtime Database e Storage não são excluídos automaticamente.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também