In May 2016, we released the newest version of Google Identity Toolkit as Firebase Authentication, and in April 2019, we released Google Cloud's Identity Platform. These products include upgraded client SDKs, open source UI libraries, session management and integrated email sending service for forgotten password flows.

On June 30, 2020, the SDKs documented on this page and the API setting page will stop functioning. (The https://identitytoolkit.googleapis.com/... and https://securetoken.googleapis.com/... endpoints, used by Identity Platform and Firebase Authentication, will continue to function.)

To migrate an existing project from Identity Toolkit, see the Identity Platform migration guide or Firebase Authentication migration guide.

Migrar de Google Identity Toolkit a Firebase Authentication

La versión más reciente de Google Identity Toolkit se lanzó como Firebase Authentication . En el futuro, el trabajo de funciones en Identity Toolkit se congelará y todo el desarrollo de funciones nuevas se realizará en Firebase Authentication. Alentamos a los desarrolladores de Identity Toolkit a cambiar a Firebase Authentication tan pronto como sea práctico para sus aplicaciones; sin embargo, Identity Toolkit sigue funcionando y no quedará obsoleto sin más anuncios.

Nuevas características

Firebase Authentication ya tiene algunas mejoras de características significativas en comparación con Google Identity Toolkit:

  • Acceso a todo Firebase

    Firebase es una plataforma móvil que lo ayuda a desarrollar rápidamente aplicaciones de alta calidad, aumentar su base de usuarios y ganar más dinero. Firebase se compone de características complementarias que puede combinar para satisfacer sus necesidades e incluye infraestructura para: análisis móvil, mensajería en la nube , base de datos en tiempo real , almacenamiento de archivos , alojamiento estático , configuración remota , informes de fallas móviles y pruebas de Android.

  • IU actualizadas

    Hemos reconstruido completamente los flujos de la interfaz de usuario en función de la última investigación de UX de Google. Esto incluye la recuperación de contraseñas, la vinculación de cuentas, los flujos de desambiguación de cuentas nuevas/existentes que a menudo requieren mucho tiempo para codificar y depurar. Integra Smart Lock for Passwords en Android, que ha mejorado significativamente la conversión de inicio de sesión y registro para las aplicaciones participantes. También admite modificaciones sencillas de temas para que coincidan con su aplicación y, para una máxima personalización, las versiones de Android e iOS son de código abierto.

  • Configuración simplificada del servidor

    Facilitamos a los desarrolladores el uso de Firebase Authentication. Con Identity Toolkit, vimos que muchos desarrolladores optaron por no implementar el flujo de recuperación de correo electrónico, lo que hacía imposible que sus usuarios recuperaran sus cuentas si olvidaban su contraseña. Firebase Authentication puede enviar mensajes de verificación de correo electrónico, restablecimiento de contraseña y cambio de contraseña al usuario y el texto se puede personalizar fácilmente para sus usuarios. Además, ya no necesita alojar los widgets de la interfaz de usuario para alojar redireccionamientos y completar operaciones de cambio de contraseña.

  • Nueva consola de administración

    Firebase tiene una nueva consola para desarrolladores y la sección Autenticación le permite ver, modificar y eliminar a sus usuarios. Esto puede ser de gran ayuda para depurar los flujos de inicio de sesión y registro. La consola también le permite configurar métodos de autenticación y personalizar plantillas de correo electrónico.

  • Nuevos SDK

    Todas las API del servidor de Identity Toolkit ahora están disponibles de forma nativa con cada una de nuestras bibliotecas de clientes (Android, iOS, web). Los desarrolladores podrán iniciar sesión y registrar usuarios antiguos y nuevos, acceder a las propiedades de los usuarios, vincular, actualizar y eliminar cuentas, restablecer contraseñas y más sin estar atados a una interfaz de usuario fija. Si lo prefiere, puede crear manualmente su propio flujo de inicio de sesión completo y experiencia sobre esta API.

  • Gestión de sesiones para aplicaciones móviles

    Con Identity Toolkit, las aplicaciones crearon su propio estado de sesión en función del evento de autenticación inicial de Identity Toolkit. Firebase Auth usa un servicio de backend que toma un token de actualización, obtenido 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 nuevos tokens de acceso, lo que deshabilitará el acceso hasta que el usuario se vuelva a autenticar en ese dispositivo.

  • Autenticación anónima y GitHub

    Firebase Authentication admite dos nuevos tipos de autenticación: GitHub y anónimo. El inicio de sesión anónimo se puede utilizar para crear una ID de usuario única sin que el usuario tenga que pasar por ningún proceso de inicio de sesión o registro. Con un usuario anónimo, ahora puede realizar llamadas API autenticadas, como lo haría con un usuario normal. Cuando el usuario decide registrarse para obtener una cuenta, toda la actividad se conserva con la misma ID de usuario. Esto es excelente para situaciones como un carrito de compras del lado del servidor o cualquier aplicación en la que desee involucrar al usuario antes de enviarlo a través de un flujo de registro.

Diferencias de características

Algunas funciones de Identity Toolkit no están disponibles actualmente en Firebase Authentication, mientras que otras funciones se han rediseñado y funcionan de manera diferente. Puede optar por no migrar inmediatamente si estas características son importantes para su aplicación. En muchos casos, es posible que estas funciones no sean importantes para su aplicación o que haya alternativas fáciles que le permitan continuar con la migración.

Diferencias del lado del servidor

El servicio central de Identity Toolkit con sus API REST subyacentes, la lógica de validación de cuentas y la base de datos de usuarios principal solo han sufrido actualizaciones menores. Pero algunas funciones y la forma en que integra Firebase Authentication en su servicio han cambiado.

  • Proveedores de identidad

    Paypal y AOL no son compatibles. Los usuarios con cuentas de estos IDP aún pueden iniciar sesión en su aplicación con el flujo de recuperación de contraseña y configurar una contraseña para su cuenta.

  • Bibliotecas de servidor

    Actualmente, hay SDK de administración de Firebase disponibles para Java, Node.js, Python, Go y C#.

  • Correos electrónicos de administración de cuentas

    El restablecimiento de contraseña, la verificación de correo electrónico y los mensajes de cambio de correo electrónico se pueden realizar mediante Firebase o desde el propio servidor de correo del desarrollador. Actualmente, las plantillas de correo electrónico de Firebase solo ofrecen una personalización limitada.

  • Confirmación de cambio de dirección de correo electrónico

    En Identity Toolkit, cuando un usuario decide cambiar su dirección de correo electrónico, envía un correo electrónico a la nueva dirección que tiene un enlace para continuar con el flujo de cambio de dirección de correo electrónico.

    Firebase confirma el cambio de dirección de correo electrónico enviando un correo electrónico de revocación a la dirección de correo electrónico anterior con un enlace para revertir el cambio.

  • despliegue de desplazados internos

    Identity Toolkit tenía la capacidad de agregar proveedores de identidad a su sistema de inicio de sesión gradualmente, para que pudiera experimentar con el impacto en sus solicitudes de soporte. Esta función se eliminó en Firebase Authentication.

Diferencias del lado del cliente

En Firebase, las funciones proporcionadas por Google Identity Toolkit se dividen en dos componentes:

  • SDK de autenticación de Firebase

    En Firebase Authentication, la funcionalidad proporcionada por la API REST de Identity Toolkit se empaquetó en SDK de cliente disponibles para Android, iOS y JavaScript. Puede usar el SDK para iniciar sesión y registrar usuarios; acceder a la información del perfil del usuario; vincular, actualizar y eliminar cuentas; y restablezca las contraseñas utilizando el SDK del cliente en lugar de comunicarse con el servicio de back-end a través de llamadas REST.

  • Autenticación de FirebaseUI

    Todos los flujos de la interfaz de usuario que administran el inicio de sesión, el registro, la recuperación de contraseñas y la vinculación de cuentas se han reconstruido utilizando los SDK de autenticación de Frebase. Están disponibles como SDK de código abierto para iOS y Android que le permiten personalizar completamente los flujos de maneras que no son posibles con Identity Toolkit.

Las diferencias adicionales incluyen:

  • Sesiones y migración

    Debido a que las sesiones se administran de manera diferente en Identity Toolkit y Firebase Authentication, las sesiones existentes de sus usuarios finalizarán al actualizar el SDK y sus usuarios tendrán que iniciar sesión nuevamente.

Antes de que empieces

Para poder migrar de Identity Toolkit a Firebase Authentication, debe

  1. Abra Firebase console , haga clic en Importar proyecto de Google y seleccione su proyecto de Identity Toolkit.

  2. Haga clic en > Permisos para abrir la página IAM y administración.

  3. Abra la página Cuentas de servicio . Aquí puede ver la cuenta de servicio que configuró previamente para Identity Toolkit.

  4. Junto a la cuenta de servicio, haz clic en > Create key . Luego, en el cuadro de diálogo Crear clave privada , establezca el Tipo de clave en JSON y haga clic en Crear . Se descarga automáticamente un archivo JSON que contiene las credenciales de su cuenta de servicio. Lo necesitará para inicializar el SDK en el siguiente paso.

  5. Vuelve a la consola de Firebase . En la sección Auth, abra la página Plantillas de correo electrónico . En esta página, personalice las plantillas de correo electrónico de su aplicación.

    En Identity Toolkit, cuando los usuarios restablecían contraseñas, cambiaban direcciones de correo electrónico y verificaban sus direcciones de correo electrónico por correo electrónico, necesitaba obtener un código OOB del servidor de Identity Toolkit y luego enviar el código a los usuarios por correo electrónico. Firebase envía correos electrónicos en función de las plantillas que configure sin que se requieran acciones adicionales.

  6. Opcional : si necesita acceder a los servicios de Firebase en su servidor, instale el SDK de Firebase.

    1. Puede instalar el módulo Firebase Node.js con npm :

      $ npm init
      $ npm install --save firebase-admin
      
    2. En su código, puede acceder a Firebase usando:

      var admin = require('firebase-admin');
      var app = admin.initializeApp({
        credential: admin.credential.cert('path/to/serviceAccountCredentials.json')
      });
      

A continuación, complete los pasos de migración para la plataforma de su aplicación: Android , iOS , web .

Servidores y JavaScript

Cambios notables

Hay una serie de diferencias adicionales en la implementación web de Firebase de Identity Toolkit.

  • Gestión de sesiones web

    Anteriormente, cuando un usuario se autenticaba con el widget 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 utilizaron esta cookie para autenticar todas las demás solicitudes de página en el sitio. Otros sitios utilizaron la cookie para crear sus propias cookies a través del sistema de administración de cookies de su marco.

    Los SDK de cliente de Firebase ahora administran tokens de ID de Firebase y funcionan con el backend de Firebase Authentication para mantener la sesión actualizada. El backend caduca las sesiones cuando se han producido 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 hora de vida. A menos que desee sesiones de solo una hora, los tokens de ID de Firebase no son apropiados para usarse como la cookie para validar todas las solicitudes de su página. En su lugar, deberá configurar un oyente para cuando el usuario inicie sesión, obtenga el token de ID de Firebase , valide el token y cree su propia cookie a través del sistema de administración de cookies de su marco.

    Deberá configurar la duración de la sesión de su cookie en función de las necesidades de seguridad de su aplicación.

  • Flujo de inicio de sesión web

    Anteriormente, los usuarios eran redirigidos a accountchooser.com cuando se iniciaba el inicio de sesión para saber qué identificador quería usar el usuario. El flujo de Firebase Auth UI ahora comienza con una lista de métodos de inicio de sesión, incluida una opción de correo electrónico que va a accountchooser.com para la web y usa la API de solicitud de sugerencia en Android. Además, las direcciones de correo electrónico ya no son necesarias en la interfaz de usuario de Firebase. Esto facilitará la compatibilidad con usuarios anónimos, usuarios de autenticación personalizada o usuarios de proveedores donde no se requieren direcciones de correo electrónico.

  • Widget de gestión de cuentas

    Este widget proporciona una interfaz de usuario para que los usuarios cambien las direcciones de correo electrónico, cambien la contraseña o desvinculen sus cuentas de los proveedores de identidad. Actualmente se encuentra en desarrollo.

  • Botón/widget de inicio de sesión

    Ya no se proporcionan widgets como el botón de inicio de sesión y la tarjeta de usuario. Se pueden crear muy fácilmente con la API de autenticación de Firebase.

  • Sin URL de salida

    Deberá llamar a firebase.auth.signOut() y manejar la devolución de llamada.

  • Sin oobActionUrl

    El envío de correo electrónico ahora lo maneja Firebase y se configura en la consola de Firebase.

  • personalización CSS

    FirebaseUI usa el estilo Material Design Lite , que agrega dinámicamente animaciones de Material Design.

Paso 1: cambiar el código del servidor

  1. Si su servidor se basa en el token de Identity Toolkit (válido durante dos semanas) para administrar las sesiones de los usuarios web, debe convertir el servidor para usar su propia cookie de sesión.

    1. Implemente un punto final para validar el token de ID de Firebase y configurar la cookie de sesión para el usuario. La aplicación cliente envía el token de ID de Firebase a este extremo.
    2. Si la solicitud entrante contiene su propia cookie de sesión, puede considerar que el usuario está autenticado. De lo contrario, trate la solicitud como no autenticada.
    3. Si no desea que ninguno de sus usuarios pierda sus sesiones de inicio de sesión existentes, debe esperar dos semanas hasta que caduquen todos los tokens de Identity Toolkit, o también debe realizar la validación de token dual para su aplicación web como se describe a continuación en el paso 3.
  2. Luego, debido a que los tokens de Firebase son diferentes a los tokens de Identity Toolkit, debe actualizar su lógica de validación de tokens. Instale el SDK de Firebase Server en su servidor; o, si usa un idioma que no es compatible con Firebase Server SDK, descargue una biblioteca de validación de tokens JWT para su entorno y valide correctamente el token .

  3. Cuando realice las actualizaciones anteriores por primera vez, es posible que aún tenga rutas de código que dependan de los tokens de Identity Toolkit. Si tiene aplicaciones iOS o Android, los usuarios deberán actualizar a la nueva versión de la aplicación para que funcionen las nuevas rutas de código. Si no quiere obligar a sus usuarios a actualizar su aplicación, puede agregar una lógica de validación de servidor adicional que examine el token y determine si necesita usar Firebase SDK o Identity Toolkit SDK para validar el token. Si solo tiene una aplicación web, todas las nuevas solicitudes de autenticación se trasladarán a Firebase y, por lo tanto, solo necesita usar los métodos de verificación de tokens de Firebase.

Consulta la referencia de la API web de Firebase .

Paso 2: Actualiza tu HTML

  1. Agregue el código de inicialización de Firebase a su aplicación:

    1. Abra su proyecto en la consola de Firebase .
    2. En la página Descripción general, haga clic en Agregar aplicación y luego en Agregar Firebase a su aplicación web . Se muestra un fragmento de código que inicializa Firebase.
    3. Copie y pegue el fragmento de inicialización en su página web.
  2. Agrega FirebaseUI Auth a tu aplicación:

    <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>
    
  3. Elimina el SDK de Identity Toolkit de tu aplicación.

  4. Si confió en el token de ID de Identity Toolkit para la administración de la sesión, debe realizar los siguientes cambios en el lado del cliente:

    1. Después de iniciar sesión correctamente con Firebase, obtenga un token de ID de Firebase llamando a firebase.auth().currentUser.getToken() .

    2. Envíe el token de ID de Firebase al servidor backend, valídelo y emita su propia cookie de sesión.

      No confíe únicamente en la cookie de sesión cuando realice operaciones confidenciales o envíe solicitudes de edición autenticadas a su servidor. Deberá proporcionar protección adicional contra la falsificación de solicitudes entre sitios (CSRF).

      Si su marco no proporciona protección CSRF, una forma de evitar un ataque sería obtener un token de ID de Firebase para el usuario que inició sesión con getToken() e incluir el token con cada solicitud (la cookie de sesión también se enviará de forma predeterminada ). Luego validaría ese token usando el SDK del servidor Firebase además de la verificación de cookies de la sesión, que completó su marco de back-end. Esto dificultará el éxito de los ataques CSRF, ya que el token de ID de Firebase solo se almacena mediante el almacenamiento web y nunca en una cookie.

    3. Los tokens de Identity Toolkit son válidos durante dos semanas. Es posible que desee continuar emitiendo tokens que duren dos semanas, o que sea más largo o más corto según los requisitos de seguridad de su aplicación. Cuando un usuario cierra la sesión, borre la cookie de sesión.

Paso 3: actualice las URL de redireccionamiento de IDP

  1. En Firebase console, abra la sección Autenticación y haga clic en la pestaña Método de inicio de sesión .

  2. Para cada proveedor de inicio de sesión federado que admita, haga lo siguiente:

    1. Haga clic en el nombre del proveedor de inicio de sesión.
    2. Copie el URI de redireccionamiento de OAuth.
    3. En la consola para desarrolladores del proveedor de inicio de sesión, actualice el URI de redirección de OAuth.

Androide

Paso 1: Agrega Firebase a tu aplicación

  1. Abra Firebase console y seleccione su proyecto de Identity Toolkit, que ya importó.

  2. En la página Descripción general, haga clic en Agregar aplicación y luego haga clic en Agregar Firebase a su aplicación de Android . En el cuadro de diálogo Agregar Firebase, proporcione el nombre del paquete de su aplicación y la huella digital del certificado de firma y haga clic en Agregar aplicación . Luego, el archivo de configuración google-services.json se descarga en su computadora.

  3. Copie el archivo de configuración en el directorio raíz del módulo de la aplicación de Android. Este archivo de configuración contiene información del proyecto y del cliente de Google OAuth.

  4. En su archivo build.gradle a nivel de proyecto ( <var>your-project</var>/build.gradle ), especifique el nombre del paquete de su aplicación en la sección defaultConfig :

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. También en su archivo build.gradle a nivel de proyecto, agregue una dependencia para incluir el complemento de servicios de Google:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. En el archivo build.gradle a nivel de aplicación de su aplicación ( <var>my-project</var>/<var>app-module</var>/build.gradle ), agregue la siguiente línea al final para habilitar el google- complemento de servicios:

    // Add to the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    

    El complemento de google-services usa el archivo google-services.json para configurar su aplicación para usar Firebase.

  7. También en el archivo build.gradle de nivel de aplicación, agregue la dependencia de autenticación de Firebase:

    compile 'com.google.firebase:firebase-auth:21.0.4'
    compile 'com.google.android.gms:play-services-auth:20.2.0'
    

Paso 2: Elimina el SDK de Identity Toolkit

  1. Quite la configuración de Identity Toolkit del archivo AndroidManifest.xml . Esta información se incluye en el archivo google-service.json y se carga mediante el complemento de servicios de google.
  2. Elimina el SDK de Identity Toolkit de tu aplicación.

Paso 3: Agregue FirebaseUI a su aplicación

  1. Agrega FirebaseUI Auth a tu aplicación.

  2. En su aplicación, reemplace las llamadas al SDK de Identity Toolkit con llamadas a FirebaseUI.

iOS

Paso 1: Agrega Firebase a tu aplicación

  1. Agregue el SDK de Firebase a su aplicación ejecutando los siguientes comandos:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Abra Firebase console y seleccione su proyecto de Identity Toolkit, que ya importó.

  3. En la página Descripción general, haga clic en Agregar aplicación y luego haga clic en Agregar Firebase a su aplicación iOS . En el cuadro de diálogo Agregar Firebase, proporcione el ID del paquete de su aplicación y el ID de la tienda de aplicaciones, y luego haga clic en Agregar aplicación . Luego, el archivo de configuración GoogleService-Info.plist se descarga en su computadora. Si tiene varios ID de paquete en su proyecto, cada ID de paquete debe estar conectado en la consola de Firebase para que pueda tener su propio archivo GoogleService-Info.plist .

  4. Copie el archivo de configuración en la raíz de su proyecto Xcode y agréguelo a todos los objetivos.

Paso 2: Elimina el SDK de Identity Toolkit

  1. Elimina GoogleIdentityToolkit del Podfile de tu aplicación.
  2. Ejecute el comando pod install del módulo.

Paso 3: Agregue FirebaseUI a su aplicación

  1. Agrega FirebaseUI Auth a tu aplicación.

  2. En su aplicación, reemplace las llamadas al SDK de Identity Toolkit con llamadas a FirebaseUI.