Firebase Auth: o que é, métodos de autenticação e provedores de login

Autor: IT Sectr Publicado: 2026-04-28 Tempo de leitura: 9 min

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 SDK unificado para autenticação que suporta login por email, Google, Apple, Facebook, Twitter e telefone.
  • O serviço gerencia automaticamente os tokens de acesso e atualização, eliminando a necessidade de os desenvolvedores implementarem lógica JWT.
  • FirebaseUI Auth é uma biblioteca pronta de telas de login personalizáveis de acordo com a marca do aplicativo.
  • Claims personalizados permitem atribuir funções e permissões através do Admin SDK.
  • A autenticação anônima fornece um UID temporário sem registro, com a capacidade de vinculá-lo posteriormente a uma conta permanente.

O que é Firebase Auth

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.

Arquitetura do serviço

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.

Preços e limites

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.

Provedores de autenticação do Firebase Auth

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 e senha

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).

Provedores sociais

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.

ProvedorProtocoloClient Secret necessário
GoogleOAuth 2.0Não
AppleOAuth 2.0 + OpenIDSim
FacebookOAuth 2.0Sim
TwitterOAuth 1.0aSim
GitHubOAuth 2.0Sim

Autenticação por telefone

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.

Integração do Firebase Auth no Android

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.

groovy
// 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")
}

Registro de usuário por email

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.

kotlin
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)
        }
    }
}

Login com Google

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.

Gerenciamento de usuários e sessões

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.

Usuário atual

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.

Autenticação anônima

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.

Logout e exclusão de conta

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.

Claims personalizados e gerenciamento de funções

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().

Casos de uso típicos

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.

kotlin
// 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

Limitações dos 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.

Segurança da autenticação

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.

Métodos de proteção

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.

Segurança de tokens personalizados

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

Quanto custa o Firebase Auth?

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).

Como vincular vários provedores a uma conta?

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.

Posso usar o Firebase Auth sem internet?

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).

Como revogo o token de um usuário?

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.

O que acontece quando um usuário é excluído?

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

  • Firebase Auth é um serviço de autenticação em nuvem do Google com um SDK unificado para Android, iOS e Web.
  • Suporta 12 provedores de login: email, telefone, Google, Apple, Facebook, Twitter e mais prontos para uso.
  • O SDK gerencia automaticamente os tokens JWT — armazenamento, atualização e restauração de sessão na reinicialização.
  • Claims personalizados através do Admin SDK permitem um modelo de acesso baseado em funções sem um servidor separado.
  • A autenticação anônima fornece um UID temporário que pode ser posteriormente vinculado a uma conta permanente.
  • A integração no Android requer uma dependência — firebase-auth-ktx — sem configuração adicional.
  • O serviço inclui proteção integrada contra força bruta, enumeração de email e bloqueio automático de contas suspeitas.

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.

Discutir o projeto

Leia também