La versión más reciente de Google Identity Toolkit se lanzó como Firebase Authentication. De ahora en adelante, se suspenderá el trabajo en las funciones de Identity Toolkit, y todo el desarrollo de funciones nuevas se realizará en Firebase Authentication. Recomendamos a los desarrolladores de Identity Toolkit que migren a Firebase Authentication lo antes posible para sus aplicaciones. Sin embargo, Identity Toolkit seguirá funcionando y no dejará de estar disponible sin un anuncio adicional.
Nuevas funciones
Firebase Authentication ya tiene algunas mejoras significativas en las funciones en comparación con Google Identity Toolkit:
Acceso a todos los productos de Firebase
Firebase es una plataforma para dispositivos móviles que te permite desarrollar apps de alta calidad con rapidez, ampliar tu base de usuarios y ganar más dinero. Firebase se compone de funciones complementarias que puedes combinar para satisfacer tus necesidades y incluye la infraestructura para lo siguiente: análisis, mensajería en la nube, base de datos en tiempo real, almacenamiento de archivos, alojamiento estático, configuración remota, informes de fallas y pruebas para Android.
IUs actualizadas
Volvemos a compilar por completo los flujos de la IU en función de la investigación de UX más reciente de Google. Esto incluye la recuperación de contraseñas, la vinculación de cuentas y los flujos de resolución de ambigüedades de cuentas nuevas o existentes que, a menudo, requieren mucho tiempo para codificarse y depurarse. Integra Smart Lock para contraseñas en Android, lo que mejoró significativamente la conversión de acceso y registro para las apps participantes. También admite modificaciones de temas fáciles para que coincidan con tu aplicación y, para lograr la máxima personalización, las versiones de Android y iOS son de código abierto.
Configuración de servidor simplificada
Facilitamos el uso de Firebase Authentication para los desarrolladores. Con Identity Toolkit, notamos que muchos desarrolladores optaron por no implementar el flujo de recuperación por correo electrónico, lo que imposibilitó que los usuarios recuperaran sus cuentas si olvidaban su contraseña. Firebase Authentication puede enviar al usuario mensajes de verificación por correo electrónico, restablecimiento de contraseña y cambio de contraseña, y el texto se puede personalizar fácilmente para tus usuarios. Además, ya no es necesario alojar los widgets de la IU para alojar redireccionamientos y completar operaciones de cambio de contraseña.
Nueva Consola del administrador
Firebase tiene una nueva consola para desarrolladores y la sección Authentication te permite ver, modificar y borrar a tus usuarios. Esto puede ser de gran ayuda para depurar tus flujos de acceso y registro. La consola también te permite configurar métodos de autenticación y personalizar plantillas de correo electrónico.
Nuevos SDKs
Todas las APIs de servidor de Identity Toolkit ahora están disponibles de forma nativa con cada una de nuestras bibliotecas cliente (Android, iOS y Web). Los desarrolladores podrán acceder a usuarios nuevos y existentes, registrarlos, acceder a sus propiedades, vincular, actualizar y borrar cuentas, restablecer contraseñas y mucho más sin estar vinculados a una IU fija. Si lo prefieres, puedes compilar manualmente tu propio flujo de acceso y experiencia completos sobre esta API.
Administración de sesiones para aplicaciones para dispositivos móviles
Con Identity Toolkit, las apps creaban su propio estado de sesión según el evento de autenticación inicial de Identity Toolkit. Firebase Auth usa un servicio de backend que toma un token de actualización, acuñado a partir del evento de autenticación, y lo intercambia por tokens de acceso de una hora para Android, iOS y JavaScript. Cuando un usuario cambia su contraseña, los tokens de actualización ya no podrán generar tokens de acceso nuevos, lo que inhabilitará el acceso hasta que el usuario vuelva a autenticarse en ese dispositivo.
Autenticación anónima y de GitHub
Firebase Authentication admite dos tipos de autenticación nuevos: GitHub y anónimo. El acceso anónimo se puede usar para crear un ID de usuario único sin que el usuario deba realizar ningún proceso de acceso o registro. Con un usuario anónimo, ahora puedes realizar llamadas a la API autenticadas, como lo harías con un usuario normal. Cuando el usuario decide registrarse para obtener una cuenta, toda la actividad se conserva con el mismo ID de usuario. Esto es ideal para situaciones como un carrito de compras del servidor o cualquier aplicación en la que quieras interactuar con el usuario antes de enviarlo a un flujo de registro.
Diferencias entre las funciones
Actualmente, algunas funciones de Identity Toolkit no están disponibles en Firebase Authentication, mientras que otras se volvieron a diseñar y funcionan de forma diferente. Si estas funciones son importantes para tu app, puedes optar por no migrar de inmediato. En muchos casos, es posible que estas funciones no sean importantes para tu app o que haya resguardos fáciles que te permitan continuar con la migración.
Diferencias del servidor
El servicio principal de Identity Toolkit, con sus APIs de REST subyacentes, su lógica de validación de cuenta y su base de datos de usuarios principal, solo se actualizó de forma menor. Sin embargo, cambiaron algunas funciones y la forma en que integras Firebase Authentication a tu servicio.
Proveedores de identidad
PayPal y AOL no son compatibles. Los usuarios con cuentas de estos IDPs pueden acceder a tu aplicación con el flujo de recuperación de contraseñas y configurar una contraseña para su cuenta.
Bibliotecas del servidor
Actualmente, hay SDK de Firebase Admin disponibles para Java, Node.js, Python, Go y C#.
Correos electrónicos de administración de la cuenta
Firebase puede realizar el restablecimiento de contraseña, la verificación de correo electrónico y los mensajes de cambio de correo electrónico, o bien puedes hacerlo desde el servidor de correo electrónico del desarrollador. Actualmente, las plantillas de correo electrónico de Firebase solo ofrecen una personalización limitada.
Confirmación del cambio de dirección de correo electrónico
En Identity Toolkit, cuando un usuario decide cambiar su dirección de correo electrónico, se envía un correo electrónico a la dirección nueva que tiene un vínculo para continuar con el flujo de cambio de dirección de correo electrónico.
Para confirmar el cambio de dirección de correo electrónico, Firebase envía un correo electrónico de revocación a la dirección de correo electrónico anterior con un vínculo para revertir el cambio.
Lanzamiento de la IDP
Identity Toolkit podía agregar proveedores de identidad a tu sistema de acceso de forma gradual para que pudieras experimentar con el impacto en tus solicitudes de asistencia. Esta función se quitó de Firebase Authentication.
Diferencias del cliente
En Firebase, las funciones que proporciona Google Identity Toolkit se dividen en dos componentes:
SDK de Firebase Authentication
En Firebase Authentication, la funcionalidad que proporciona la API de REST de Identity Toolkit se empaquetó en SDK de clientes disponibles para Android, iOS y JavaScript. Puedes usar el SDK para acceder a los usuarios y registrarlos, acceder a la información del perfil del usuario, vincular, actualizar y borrar cuentas, y restablecer contraseñas con el SDK cliente en lugar de comunicarte con el servicio de backend a través de llamadas REST.
FirebaseUI Auth
Todos los flujos de la IU que administran el acceso, el registro, la recuperación de contraseñas y la vinculación de cuentas se volvieron a compilar con los SDK de Firebase Authentication. Están disponibles como SDKs de código abierto para iOS y Android para que puedas personalizar los flujos por completo de formas que no son posibles con Identity Toolkit.
Entre las diferencias adicionales, se incluyen las siguientes:
Sesiones y migración
Debido a que las sesiones se administran de manera diferente en Identity Toolkit y Firebase Authentication, las sesiones existentes de los usuarios finalizarán cuando se actualice el SDK, y los usuarios deberán volver a acceder.
Antes de comenzar
Para poder migrar de Identity Toolkit a Firebase Authentication, debes hacer lo siguiente:
Abre Firebase console, haz clic en Importar proyecto de Google y selecciona tu proyecto de Identity Toolkit.
Haz clic en settings > Permisos para abrir la página IAM y administración.
Abre la Cuentas de servicio. Aquí puedes ver la cuenta de servicio que configuraste anteriormente para Identity Toolkit.
Junto a la cuenta de servicio, haz clic en more_vert > Crear clave. Luego, en el diálogo Crear clave privada, establece el tipo de clave en JSON y haz clic en Crear. Se descargará un archivo JSON que contiene las credenciales de tu cuenta de servicio. Lo necesitarás para inicializar el SDK en el siguiente paso.
Regresa a Firebase console. En la sección Auth, abre la página Plantillas de correo electrónico. En esta página, puedes personalizar las plantillas de correo electrónico de tu app.
En Identity Toolkit, cuando los usuarios restablecían contraseñas, cambiaban direcciones de correo electrónico y verificaban sus direcciones de correo electrónico, debías obtener un código fuera del servicio del servidor de Identity Toolkit y, luego, enviarlo a los usuarios por correo electrónico. Firebase envía correos electrónicos según las plantillas que configures sin necesidad de realizar acciones adicionales.
Opcional: Si necesitas acceder a los servicios de Firebase en tu servidor, instala el SDK de Firebase.
Puedes instalar el módulo de Node.js de Firebase con
npm
:$ npm init $ npm install --save firebase-admin
En tu código, puedes acceder a Firebase con lo siguiente:
var admin = require('firebase-admin'); var app = admin.initializeApp({ credential: admin.credential.cert('path/to/serviceAccountCredentials.json') });
A continuación, completa los pasos de migración para la plataforma de tu app: Android, iOS o Web.
Servidores y JavaScript
Cambios importantes
Existen varias diferencias adicionales en la implementación web de Firebase desde Identity Toolkit.
Administración de sesiones web
Anteriormente, cuando un usuario se autenticaba con el widget de Identity Toolkit, se configuraba una cookie para el usuario que se usaba para iniciar la sesión. Esta cookie tenía una duración de dos semanas y se usaba para permitir que el usuario usara el widget de administración de cuentas para cambiar la contraseña y la dirección de correo electrónico. Algunos sitios usaban esta cookie para autenticar todas las demás solicitudes de páginas en el sitio. Otros sitios usaron la cookie para crear sus propias cookies a través del sistema de administración de cookies de su framework.
Los SDK de cliente de Firebase ahora administran los tokens de ID de Firebase y funcionan con el backend de Firebase Authentication para mantener la sesión actualizada. El backend vence las sesiones cuando se producen cambios importantes en la cuenta (como cambios en la contraseña del usuario). Los tokens de ID de Firebase no se configuran automáticamente como cookies en el cliente web y solo tienen una duración de una hora. A menos que quieras sesiones de solo una hora, los tokens de ID de Firebase no son adecuados para usarse como la cookie que valida todas tus solicitudes de página. En su lugar, deberás configurar un objeto de escucha para cuando el usuario acceda, obtener el token de ID de Firebase, validar el token y crear tu propia cookie a través del sistema de administración de cookies de tu framework.
Deberás establecer la duración de la sesión de tu cookie según las necesidades de seguridad de tu aplicación.
Flujo de acceso web
Anteriormente, los usuarios se redireccionaban a
accountchooser.com
cuando se iniciaba el acceso para saber qué identificador quería usar el usuario. El flujo de la IU de Firebase Auth ahora comienza con una lista de métodos de acceso, incluida una opción de correo electrónico que se envía aaccountchooser.com
para la Web y usa la API de hintRequest en Android. Además, ya no se requieren direcciones de correo electrónico en la IU de Firebase. Esto facilitará la compatibilidad con usuarios anónimos, usuarios de autenticación personalizados o usuarios de proveedores en los que no se requieren direcciones de correo electrónico.Widget de administración de la cuenta
Este widget proporciona una IU para que los usuarios cambien las direcciones de correo electrónico, la contraseña o desvinculen sus cuentas de los proveedores de identidad. Actualmente, está en desarrollo.
Botón o widget de acceso
Ya no se proporcionan widgets como el botón de acceso y la tarjeta del usuario. Se pueden compilar con mucha facilidad con la API de Firebase Authentication.
No hay signOutUrl
Deberás llamar a
firebase.auth.signOut()
y controlar la devolución de llamada.No hay oobActionUrl
Firebase ahora controla el envío de correos electrónicos y se configura en Firebase console.
Personalización de CSS
FirebaseUI usa el diseño de Material Design Lite, que agrega animaciones de Material Design de forma dinámica.
Paso 1: Cambia el código del servidor
Si tu servidor depende del token de Identity Toolkit (válido por dos semanas) para gestionar las sesiones de los usuarios web, debes convertir el servidor para que use su propia cookie de sesión.
- Implementa un extremo para validar el token de ID de Firebase y configurar la cookie de sesión para el usuario. La app cliente envía el token de ID de Firebase a este extremo.
- Si la solicitud entrante contiene tu propia cookie de sesión, puedes considerar que el usuario está autenticado. De lo contrario, trata la solicitud como no autenticada.
- Si no quieres que ninguno de tus usuarios pierda sus sesiones existentes de acceso, debes esperar dos semanas para que venza el token de Identity Toolkit o también realizar la validación de token doble para tu aplicación web, como se describe a continuación en el paso 3.
A continuación, debido a que los tokens de Firebase son diferentes de los tokens de Identity Toolkit, debes actualizar tu lógica de validación de tokens. Instala el SDK de servidor de Firebase en tu servidor o, si usas un lenguaje que no es compatible con el SDK de servidor de Firebase, descarga una biblioteca de validación de tokens JWT para tu entorno y valida el token de forma correcta.
Cuando realices las actualizaciones anteriores por primera vez, es posible que aún tengas instrucciones de código que dependan de los tokens de Identity Toolkit. Si tienes aplicaciones para iOS o Android, los usuarios deberán actualizar a la nueva versión de la app para que funcionen las nuevas instrucciones de código. Si no quieres forzar a los usuarios a actualizar tu app, puedes agregar una lógica de validación del servidor adicional que examine el token y determine si debe usar el SDK de Firebase o el SDK de Identity Toolkit para validar el token. Si solo tienes una aplicación web, todas las solicitudes de autenticación nuevas se transferirán a Firebase y, por lo tanto, solo debes usar los métodos de verificación de tokens de Firebase.
Consulta la Referencia de la API de Firebase Web.
Paso 2: Actualiza el código HTML
Agrega el código de inicialización de Firebase a tu app:
- Abre tu proyecto en Firebase console.
- En la página Descripción general, haz clic en Agregar app y, luego, en Agregar Firebase a tu aplicación web. Se mostrará un fragmento de código que inicializa Firebase.
- Copia y pega el fragmento de inicialización en tu página web.
Agrega FirebaseUI Auth a tu app:
<script src="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.js"></script> <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.css" /> <!-- ******************************************************************************************* * TODO(DEVELOPER): Paste the initialization snippet from: * Firebase Console > Overview > Add Firebase to your web app. * ***************************************************************************************** --> <script type="text/javascript"> // FirebaseUI config. var uiConfig = { 'signInSuccessUrl': '<url-to-redirect-to-on-success>', 'signInOptions': [ // Leave the lines as is for the providers you want to offer your users. firebase.auth.GoogleAuthProvider.PROVIDER_ID, firebase.auth.FacebookAuthProvider.PROVIDER_ID, firebase.auth.TwitterAuthProvider.PROVIDER_ID, firebase.auth.GithubAuthProvider.PROVIDER_ID, firebase.auth.EmailAuthProvider.PROVIDER_ID ], // Terms of service url. 'tosUrl': '<your-tos-url>', }; // Initialize the FirebaseUI Widget using Firebase. var ui = new firebaseui.auth.AuthUI(firebase.auth()); // The start method will wait until the DOM is loaded. ui.start('#firebaseui-auth-container', uiConfig); </script>
Quita el SDK de Identity Toolkit de tu app.
Si dependías del token de ID de Identity Toolkit para la administración de sesiones, debes realizar los siguientes cambios en el cliente:
Después de acceder correctamente con Firebase, llama a
firebase.auth().currentUser.getToken()
para obtener un token de ID de Firebase.Envía el token de ID de Firebase al servidor de backend, validarlo y emitir tu propia cookie de sesión.
No te bases únicamente en la cookie de sesión cuando realices operaciones sensibles o envíes solicitudes de edición autenticadas a tu servidor. Deberás proporcionar protección adicional contra la falsificación de solicitudes entre sitios (CSRF).
Si tu framework no proporciona protección contra CSRF, una forma de evitar un ataque sería obtener un token de ID de Firebase para el usuario que accedió con
getToken()
y, luego, incluirlo en cada solicitud (la cookie de sesión también se enviará de forma predeterminada). Luego, deberías validar ese token con el SDK del servidor de Firebase, además de la verificación de la cookie de sesión, que completó tu framework de backend. Esto dificultará que los ataques CSRF se lleven a cabo, ya que el token de ID de Firebase solo se almacena con el almacenamiento web y nunca en una cookie.Los tokens de Identity Toolkit son válidos por dos semanas. Te recomendamos que sigas emitiendo tokens que duren dos semanas, o bien que los hagas más largos o más cortos según los requisitos de seguridad de tu app. Cuando un usuario salga de su cuenta, borra la cookie de sesión.
Paso 3: Actualiza las URLs de redireccionamiento del IdP
En Firebase console, abre la sección Authentication y haz clic en la pestaña Sign-in Method.
Para cada proveedor de acceso federado que admitas, haz lo siguiente:
- Haz clic en el nombre del proveedor de acceso.
- Copia el URI de redireccionamiento de OAuth.
- En la consola para desarrolladores del proveedor de acceso, actualiza el URI de redireccionamiento de OAuth.
Android
Paso 1: Agrega Firebase a tu app
Abre Firebase console y selecciona tu proyecto de Identity Toolkit, que ya importaste.
En la página Descripción general, haz clic en Agregar app y, luego, en Agregar Firebase a tu app para Android. En el diálogo Agregar Firebase, proporciona el nombre del paquete y la huella digital del certificado de firma de tu app, y haz clic en Agregar app. Luego, el archivo de configuración
google-services.json
se descargará en tu computadora.Copia el archivo de configuración en el directorio raíz del módulo de la app para Android. Este archivo de configuración contiene información del proyecto y del cliente de OAuth de Google.
En el archivo
build.gradle
de nivel de proyecto (<var>your-project</var>/build.gradle
), especifica el nombre del paquete de tu app en la seccióndefaultConfig
:defaultConfig { ….. applicationId "com.your-app" }
También en el archivo
build.gradle
a nivel del proyecto, agrega una dependencia para incluir el complemento google-services:buildscript { dependencies { // Add this line classpath 'com.google.gms:google-services:3.0.0' } }
En el archivo
build.gradle
de nivel de la app de tu app (<var>my-project</var>/<var>app-module</var>/build.gradle
), agrega la siguiente línea al final para habilitar el complemento google-services:// Add to the bottom of the file apply plugin: 'com.google.gms.google-services'
El complemento google-services usa el archivo
google-services.json
para configurar tu aplicación para usar Firebase.También en el archivo
build.gradle
a nivel de la app, agrega la dependencia de Firebase Authentication:compile 'com.google.firebase:firebase-auth:23.1.0' compile 'com.google.android.gms:play-services-auth:21.3.0'
Paso 2: Quita el SDK de Identity Toolkit
- Quita la configuración de Identity Toolkit del archivo
AndroidManifest.xml
. Esta información se incluye en el archivogoogle-service.json
y la carga el complemento google-services. - Quita el SDK de Identity Toolkit de tu app.
Paso 3: Agrega FirebaseUI a tu app
Agrega FirebaseUI Auth a tu app.
En tu app, reemplaza las llamadas al SDK de Identity Toolkit por llamadas a FirebaseUI.
iOS
Paso 1: Agrega Firebase a tu app
Ejecuta los siguientes comandos para agregar el SDK de Firebase a tu app:
$ cd your-project directory $ pod init $ pod 'Firebase'
Abre Firebase console y selecciona tu proyecto de Identity Toolkit, que ya importaste.
En la página Descripción general, haz clic en Agregar app y, luego, en Agregar Firebase a tu app para iOS. En el diálogo Agregar Firebase, proporciona el ID de paquete y el ID de App Store de tu app y, luego, haz clic en Agregar app. Luego, el archivo de configuración
GoogleService-Info.plist
se descargará en tu computadora. Si tienes varios IDs de paquete en tu proyecto, cada uno de ellos debe estar conectado en Firebase console para que pueda tener su propio archivoGoogleService-Info.plist
.Copia el archivo de configuración en la raíz de tu proyecto de Xcode y agrégalo a todos los destinos.
Paso 2: Quita el SDK de Identity Toolkit
- Quita
GoogleIdentityToolkit
del Podfile de tu app. - Ejecuta el comando
pod install
.
Paso 3: Agrega FirebaseUI a tu app
Agrega FirebaseUI Auth a tu app.
En tu app, reemplaza las llamadas al SDK de Identity Toolkit por llamadas a FirebaseUI.