Firebase Auth: qué es, métodos de autenticación y proveedores de inicio de sesión

Autor: IT Sectr Publicado: 2026-04-28 Tiempo de lectura: 9 min

Firebase Auth es un servicio en la nube de Google para la autenticación de usuarios en aplicaciones móviles y web, que proporciona métodos de inicio de sesión ya preparados a través de email, teléfono y redes sociales. El SDK gestiona todo el ciclo de vida de la sesión: registro, inicio de sesión, actualización de token y cierre de sesión. Según Google, 2026, Firebase Auth admite más de 10 proveedores de autenticación listos para usar. El servicio es gratuito sin límites en el número de usuarios autenticados.

Puntos clave

  • Firebase Auth es un SDK unificado de autenticación compatible con inicio de sesión por email, Google, Apple, Facebook, Twitter y teléfono.
  • El servicio gestiona automáticamente los tokens de acceso y actualización, eliminando la necesidad de que los desarrolladores implementen lógica JWT.
  • FirebaseUI Auth es una biblioteca lista para usar de pantallas de inicio de sesión personalizables según la marca de tu aplicación.
  • Los claims personalizados permiten asignar roles y permisos a través del Admin SDK.
  • La autenticación anónima proporciona un UID temporal sin registro, con la posibilidad de vincularlo posteriormente a una cuenta permanente.

Qué es Firebase Auth

Firebase Auth es un servicio de autenticación backend de Google proporcionado como parte del SDK de Firebase. Gestiona toda la lógica del lado del servidor para la administración de cuentas: almacenamiento de hashes de contraseñas, generación de tokens JWT y procesamiento de flujos OAuth 2.0 y OpenID Connect. Los desarrolladores no necesitan implementar su propio servidor de autenticación, gestionar tokens de actualización ni implementar protocolos de verificación — Firebase lo hace todo.

Arquitectura del servicio

Firebase Auth utiliza una arquitectura federada con un almacén de usuarios unificado. Cada usuario recibe un identificador único (UID) que no depende del proveedor de inicio de sesión. Al registrarse mediante Google y email, se crea un único usuario con dos cuentas vinculadas (proveedores). Firebase gestiona automáticamente la vinculación de cuentas del lado del cliente sin necesidad de solicitudes adicionales al servidor.

Los tokens de Firebase Auth son JWT (JSON Web Token) con un payload que contiene UID, hora de emisión, hora de vencimiento y claims personalizados. Los tokens de acceso duran 1 hora, los tokens de actualización son ilimitados (pero se pueden revocar a través de la Consola de Administración). El SDK actualiza automáticamente el token en cada solicitud HTTP a los servicios de Firebase. Según Google (2026), Firebase Auth gestiona más de 500 millones de autenticaciones al día.

Precios y límites

Firebase Auth es completamente gratuito en el plan Spark (gratuito) y en el plan Blaze (pago por uso). El único límite son 10 mil autenticaciones anónimas por día en Spark (sin límite en Blaze). Las autenticaciones por email/teléfono y OAuth no tienen límites. Para la verificación telefónica, Spark ofrece 10 mil verificaciones al mes, mientras que Blaze cobra por uso ($0.01 por verificación después de las primeras 10 mil). Esto convierte a Firebase Auth en una de las soluciones más accesibles del mercado.

Proveedores de autenticación de Firebase Auth

Firebase Auth admite 12 proveedores de autenticación listos para usar. Cada proveedor se implementa como un servicio de identidad separado con un flujo predefinido — el desarrollador solo necesita crear un objeto Credential y pasarlo a signInWithCredential. Firebase determina automáticamente si el usuario es nuevo o existente, y en caso de duplicación de email, ofrece vincular cuentas.

Email y contraseña

Email/Password es el método básico de autenticación con hashes de contraseñas (bcrypt) almacenados en los servidores de Firebase. Admite registro, inicio de sesión, restablecimiento de contraseña por email y confirmación de email. Firebase verifica automáticamente la fortaleza de la contraseña (mínimo 6 caracteres) y puede bloquear el inicio de sesión después de N intentos fallidos (protección contra fuerza bruta).

Proveedores sociales

Google, Apple, Facebook, Twitter, Microsoft, Yahoo, GitHub — todos los proveedores OAuth 2.0 se pueden configurar a través de la consola de Firebase en 5 minutos. Para cada proveedor, debes obtener un Client ID y Client Secret desde la consola del propio proveedor. Apple Sign In es obligatorio para aplicaciones de App Store (requisito de Apple desde 2020). Firebase Auth admite completamente el flujo de Apple Sign In con verificación JWT.

ProveedorProtocoloClient Secret requerido
GoogleOAuth 2.0No
AppleOAuth 2.0 + OpenID
FacebookOAuth 2.0
TwitterOAuth 1.0a
GitHubOAuth 2.0

Autenticación telefónica

Phone Auth es la autenticación mediante código SMS enviado al número de teléfono del usuario. Firebase utiliza Silent APN (iOS) o SMS Retriever API (Android) para leer automáticamente el código sin necesidad de entrada del teclado. En Android, SMS Retriever API solo funciona en dispositivos con Google Play Services. Para regiones donde SMS no está disponible, Firebase admite la verificación reCAPTCHA como alternativa. La autenticación telefónica es crítica para aplicaciones que requieren vinculación con un número de teléfono — entrega de comida, transporte, banca.

Integración de Firebase Auth en Android

Añadir Firebase Auth en Android requiere agregar la dependencia firebase-auth-ktx en build.gradle e inicializar Firebase App (se hace automáticamente a través del plugin Google Services). Después de eso, el objeto FirebaseAuth está disponible a través del método estático getInstance() — un singleton para toda la aplicación. No se requiere configuración adicional.

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 usuario por email

createUserWithEmailAndPassword es el método principal para el registro. Recibe un email y una contraseña, crea un usuario en Firebase Auth y devuelve un objeto AuthResult con el UID. Si ya existe un usuario con ese email, Firebase devuelve el error ERROR_EMAIL_ALREADY_IN_USE. Después de un registro exitoso, el SDK guarda automáticamente el token en SharedPreferences y restaura la sesión en el siguiente inicio de la aplicación sin llamar a 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)
        }
    }
}

Inicio de sesión con Google

Para Google Sign In se utiliza un proceso de dos pasos: obtener un ID Token a través de Credential Manager (Android) o Google Sign-In SDK, y luego pasar el token a una credencial de Firebase. Firebase verifica el token en su servidor (comprueba la firma con la clave RSA de Google) y crea o devuelve el usuario existente. El proceso no requiere almacenar un secreto en el cliente — toda la autenticación se realiza mediante verificación criptográfica de tokens.

Gestión de usuarios y sesiones

Firebase Auth gestiona automáticamente el ciclo de vida de la sesión. Después del inicio de sesión, el SDK guarda el token de actualización en el almacenamiento local y, en cada reinicio de la aplicación, restaura la sesión mediante inicio de sesión silencioso. Los desarrolladores no necesitan implementar almacenamiento de tokens, gestión de vencimiento ni actualización — Firebase Auth SDK lo hace todo.

Usuario actual

FirebaseAuth.getInstance().currentUser devuelve un objeto FirebaseUser si la sesión está activa, o null si el usuario ha cerrado sesión. FirebaseUser contiene UID, email, displayName, photoUrl, phoneNumber, providerData y una lista de claims. Después de las actualizaciones del perfil (updateProfile), los cambios se sincronizan con el servidor automáticamente. El objeto FirebaseUser se almacena en caché en memoria y se actualiza en cualquier operación de autenticación.

Autenticación anónima

signInAnonymously crea un usuario temporal sin registro. Los usuarios anónimos tienen un UID pero no tienen email, nombre ni proveedor. Esto es útil para aplicaciones donde el contenido está disponible antes del registro (carrito, favoritos, historial). Cuando el usuario decide registrarse, la cuenta anónima se vincula a una permanente a través de linkWithCredential. En el plan Spark, hay un límite de 10 mil autenticaciones anónimas por día.

Según Google (2026), aproximadamente el 40% de los usuarios comienzan a usar una aplicación de forma anónima, y el 25% de ellos vincula posteriormente su cuenta anónima a una permanente. Esto significa que la autenticación anónima no pierde datos al convertir un usuario en registrado.

Cierre de sesión y eliminación de cuenta

El método signOut() limpia la sesión local y elimina el token guardado. Después de llamar a signOut, currentUser se vuelve null. El método delete() elimina completamente la cuenta de usuario de Firebase Auth — todos los proveedores vinculados se desconectan y se bloquea el acceso a los servicios de Firebase. La eliminación del usuario es irreversible y requiere reautenticación para protegerse contra la eliminación no autorizada de la cuenta.

Claims personalizados y gestión de roles

Custom Claims son atributos personalizados que Firebase Auth añade al token JWT del usuario. A diferencia de los campos de perfil estándar (email, displayName), los claims solo están disponibles del lado del servidor — a través del Admin SDK o mediante reglas en Firebase Security Rules para Firestore y Realtime Database. Los claims no son visibles directamente para el cliente, pero se pueden leer mediante user.getIdTokenResult().

Casos de uso típicos

Roles y derechos de acceso son el caso de uso más común de los claims. El Admin SDK permite asignar el rol “admin”, “moderator” o “premium_user” a través de un mapa en el servidor. Estos claims se incluyen automáticamente en el token y se pueden utilizar en Firestore Security Rules para el control de acceso. Según Google (2026), el 65% de los proyectos de Firebase utilizan claims personalizados para la gestión de acceso a datos en lugar de un servidor de roles separado.

kotlin
// Admin SDK (Node.js) — asignación de claims al usuario
const admin = require("firebase-admin")

await admin.auth().setCustomUserClaims(uid, {
    role: "premium",
    tier: "pro",
    maxProjects: 50
})

// Lectura de claims en el cliente
val claims = FirebaseAuth.getInstance()
    .currentUser?.getIdTokenResult(true)
    ?.await()?.claims

Limitaciones de los claims

Los claims personalizados tienen limitaciones: un máximo de 1000 bytes para todo el objeto JSON de claims por usuario, no más de 20 claves en el objeto. Los claims no están diseñados para almacenar datos dinámicos — solo se actualizan a través del Admin SDK y no se sincronizan en tiempo real. Después de actualizar los claims, el usuario debe actualizar el token (getIdTokenResult(true)) o volver a iniciar sesión en la aplicación. Los claims no se almacenan en caché en el cliente — cada nuevo inicio de sesión recibe un token actualizado del servidor.

Seguridad de la autenticación

Firebase Auth implementa protección de cuentas en múltiples niveles: cifrado de tráfico (TLS 1.3), hash de contraseñas (bcrypt, costo 10), protección contra fuerza bruta con Adaptive Pricing (ralentización automática de la respuesta ante actividad sospechosa) e integración con reCAPTCHA para inicio de sesión web. Adicionalmente, Firebase Auth desactiva cuentas ante actividad sospechosa — inicios de sesión masivos desde diferentes IP, intentos de inicio de sesión con contraseña incorrecta y direcciones de email sospechosas.

Métodos de protección

Account Lockout — bloqueo automático de la cuenta después de un número determinado de intentos fallidos de inicio de sesión. El umbral se configura en la consola de Firebase (por defecto 10 intentos). Email Enumeration Protection — protección contra la enumeración de direcciones de email. Al activarlo, Firebase devuelve el mismo error tanto para un email existente como para uno inexistente. Trusted Domains — restricción del inicio de sesión solo para usuarios con dominios de email especificados en la configuración.

Seguridad de tokens personalizados

Se puede construir autenticación personalizada adicional utilizando Custom Tokens — JWT firmados por una cuenta de servicio de Firebase. El cliente pasa el token personalizado a signInWithCustomToken(), Firebase verifica la firma y crea una sesión. Esto permite integrar Firebase Auth con la autenticación del lado del servidor existente (por ejemplo, tu propio servidor OAuth 2.0) sin duplicar la base de datos de usuarios. El token dura 1 hora, después de lo cual el SDK actualiza automáticamente la sesión a través de un token de actualización de Firebase.

Preguntas frecuentes

¿Cuánto cuesta Firebase Auth?

Firebase Auth es completamente gratuito para todos los proveedores en los planes Spark y Blaze. Límites: 10 mil registros anónimos por día (Spark) y 10 mil verificaciones SMS por mes (Spark).

¿Cómo vinculo varios proveedores a una sola cuenta?

Usa linkWithCredential — un método que vincula un nuevo proveedor al usuario anónimo o de email actual. El usuario inicia sesión con Google y luego vincula su email a través de linkWithCredential.

¿Se puede usar Firebase Auth sin internet?

Firebase Auth requiere internet para iniciar sesión, pero almacena la sesión en caché localmente. Después del inicio de sesión, la aplicación funciona en modo sin conexión hasta que se necesita actualizar el token (una vez por hora).

¿Cómo revoco el token de un usuario?

En la consola de Firebase, ve a la sección Authentication, encuentra al usuario y haz clic en “Revoke Tokens”. Todas las sesiones activas del usuario dejarán de ser válidas en un plazo de 30 minutos.

¿Qué ocurre cuando se elimina un usuario?

La eliminación de cuenta a través de la consola o Admin SDK bloquea inmediatamente el acceso a todos los servicios de Firebase. Los tokens dejan de funcionar. Los datos en Firestore, Realtime Database y Storage no se eliminan automáticamente.

Resumen

  • Firebase Auth es un servicio de autenticación en la nube de Google con un SDK unificado para Android, iOS y Web.
  • Admite 12 proveedores de inicio de sesión: email, teléfono, Google, Apple, Facebook, Twitter y más listos para usar.
  • El SDK gestiona automáticamente los tokens JWT — almacenamiento, actualización y restauración de sesión al reiniciar.
  • Los claims personalizados a través del Admin SDK permiten implementar un modelo de acceso basado en roles sin un servidor separado.
  • La autenticación anónima proporciona un UID temporal que puede vincularse posteriormente a una cuenta permanente.
  • La integración en Android requiere una dependencia — firebase-auth-ktx — sin configuración adicional.
  • El servicio incluye protección integrada contra fuerza bruta, enumeración de email y bloqueo automático de cuentas sospechosas.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también