En mayo de 2016, lanzamos la versión más reciente de Google Identity Toolkit como Firebase Authentication y, en abril de 2019, lanzamos la plataforma de identidad de Google Cloud . Estos productos incluyen SDK de cliente actualizados, bibliotecas de interfaz de usuario de código abierto, administración de sesiones y servicio de envío de correo electrónico integrado para los flujos de contraseñas olvidadas.

El 30 de junio de 2020 , los SDK documentados en esta página y la página de configuración de API dejarán de funcionar. (Los https://identitytoolkit.googleapis.com/... y https://securetoken.googleapis.com/... , utilizados por Identity Platform y Firebase Authentication, seguirán funcionando).

Para migrar un proyecto existente desde Identity Toolkit, consulte la guía de migración de Identity Platform o la guía de migración de Firebase Authentication .

Migra de Google Identity Toolkit a Google Cloud Identity Platform

La versión más reciente de Google Identity Toolkit se lanzó como Identity Platform y Firebase Authentication. A partir de ahora, se congelará el trabajo de funciones en Identity Toolkit y se desarrollará toda la función nueva en Identity Platform y Firebase Authentication. Alentamos a los desarrolladores de Identity Toolkit a que pasen a estas plataformas en cuanto sea práctico para sus aplicaciones.

Nuevas funciones

Identity Platform ya tiene mejoras de características importantes sobre Google Identity Toolkit:

  • Nueva Consola del administrador

    Identity Platform tiene una nueva consola de desarrollador que te permite ver, modificar y borrar tus usuarios. Esto puede ser útil para depurar tus flujos de acceso y de registro. Console también te permite configurar métodos de autenticación y personalizar plantillas de correo electrónico.

  • Nuevos métodos de autenticación

    Identity Platform admite estándares de federación empresarial, como SAML y OIDC, lo que te permite escalar apps y servicios SaaS. Identity Platform también es compatible con proveedores como GitHub, Microsoft, Yahoo y muchos más. Puedes usar el acceso anónimo para crear un ID de usuario único sin necesidad de realizar el proceso de acceso o registro. Esto te permite 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 del usuario. Esto es valioso para situaciones como los carritos de compras del servidor o algunas otras aplicaciones en las que deseas interactuar con el usuario antes de enviarlo a través de un flujo de registro.

  • Escala con confianza con los Acuerdos de Nivel de Servicio y la Asistencia de Cloud

    Identity Platform se basa en la infraestructura de confianza de Google y proporciona acuerdos de nivel de servicio y asistencia de Google Cloud. Esto significa que puedes escalar tu servicio con confianza y confiar en que Google proporcionará la resiliencia, disponibilidad y escalabilidad que necesitas.

  • Acceso a todo Firebase

    Firebase es una plataforma móvil que te permite desarrollar apps de alta calidad, aumentar tu base de usuarios y ganar más dinero con rapidez. Firebase está compuesto de funciones complementarias que puedes combinar según tus necesidades e incluye infraestructura para Analytics, mensajería en la nube, base de datos en tiempo real, almacenamiento de archivos, hosting estático, configuración remota, informes de fallas y para dispositivos móviles.

  • IUs actualizadas

    Reconstruimos 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 desambiguación de cuentas nuevas o existentes que suelen tardar mucho tiempo en codificarse y depurarse. Integra Smart Lock para contraseñas en Android, que mejoró significativamente la conversión de acceso y registro en las apps participantes. También admite modificaciones de tema sencillas para que coincidan con tu aplicación y, a fin de maximizar la personalización, las versiones de iOS y Android se configuraron con código abierto.

  • Configuración simplificada del servidor

    Con Identity Toolkit, observamos que muchos desarrolladores decidieron no implementar el flujo de recuperación de correo electrónico, lo cual impedía que sus usuarios recuperaran sus cuentas si olvidaban su contraseña. Identity Platform puede enviar mensajes de verificación de correo electrónico, restablecimiento de contraseña y cambios de contraseña al usuario, y el texto se puede personalizar fácilmente para los usuarios. Además, ya no necesitas alojar los widgets de la IU para alojar redireccionamientos y completar operaciones de cambio de contraseña.

  • Nuevos SDK

    Todas las API del servidor de Identity Toolkit ahora están disponibles de forma nativa con cada una de nuestras bibliotecas cliente (Android, iOS y la Web). Los desarrolladores podrán acceder a sus cuentas anteriores y nuevas, acceder a las propiedades de los usuarios, 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 en función de esta API.

  • Administración de sesiones en aplicaciones para dispositivos móviles

    Con Identity Toolkit, las apps crearon su propio estado de sesión en función del evento de autenticación inicial de Identity Toolkit. Identity Platform usa un servicio de backend que toma un token de actualización, que se genera en el evento de autenticación y lo cambia por tokens de acceso de una hora para Android, iOS y JavaScript. Cuando un usuario cambia la contraseña, los tokens de actualización ya no podrán generar nuevos tokens de acceso y, por lo tanto, se inhabilita el acceso hasta que el usuario se vuelva a autenticar en ese dispositivo.

Diferencias en las funciones

Algunas funciones de Identity Toolkit no están disponibles actualmente en Identity Platform, mientras que otras características se rediseñaron y funcionan de manera diferente. Puedes elegir no migrar de inmediato si estas funciones son importantes para tu app. En muchos casos, estas funciones pueden no ser importantes para tu app o pueden existir resguardos fáciles de usar que te permitan continuar con la migración.

Diferencias en el servidor

El servicio principal de Identity Toolkit con sus API de REST subyacentes, la lógica de validación de la cuenta y la base de datos del usuario principal solo se sometieron a actualizaciones menores. Sin embargo, cambiaron algunas características y la forma de integrar Identity Platform en tu servicio.

  • Proveedores de identidad

    No se admiten PayPal ni AOL. Los usuarios con cuentas de estos IdP pueden igualmente acceder a tu aplicación con el flujo de recuperación de contraseñas y configurar una contraseña para su cuenta.

  • Bibliotecas de servidor

    Actualmente, hay SDK de Admin disponibles para Java, Node.js, Python, Go y C#.

  • Correos electrónicos de administración de cuentas

    Firebase o los servidores de correo electrónico del desarrollador pueden realizar el restablecimiento de la contraseña, la verificación del correo electrónico y los mensajes de cambio de correo electrónico. Actualmente, las plantillas de correo electrónico ofrecen una personalización limitada de la IU, pero se pueden personalizar aún más con los SDK de Admin.

  • 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 dirección nueva que tiene un vínculo para continuar con el flujo de cambio de dirección.

    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 anterior con un vínculo para revertir el cambio.

  • Lanzamiento de IdP

    Identity Toolkit tuvo la capacidad de agregar proveedores de identidad a tu sistema de acceso de forma gradual, de modo que podrías experimentar con el impacto en tus solicitudes de asistencia. Se quitó esta función de Firebase Authentication.

Diferencias del cliente

En Identity Platform, las funciones que proporciona Google Identity Toolkit se dividen en dos componentes:

  • SDK de cliente y servidor

    En Identity Platform, la funcionalidad de la API de REST de Identity Toolkit se empaqueta en SDK cliente disponibles para Android, iOS y JavaScript. Puedes usar el SDK para acceder y registrar usuarios; 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 de REST.

  • Widget de IU

    Todos los flujos de 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 cliente y se empaquetan como un widget de acceso. Están disponibles como SDK de código abierto para iOS, Android y la Web, y te permiten personalizar los flujos de maneras no posibles con Identity Toolkit.

Las diferencias adicionales incluyen lo siguiente:

  • Sesiones y migración

    Debido a que las sesiones se administran de manera diferente en Identity Tool y en Identity Platform, los usuarios existentes finalizarán cuando actualicen el SDK, y los usuarios deberán volver a acceder.

Antes de comenzar

Antes de migrar de Identity Toolkit, debes hacer lo siguiente:

  1. Abre Cloud Console y selecciona tu proyecto de Identity Toolkit.

  2. En Marketplace, navega hasta Identity Platform y selecciona 'Enable Identity Platform'

  3. Abre la Cuentas de servicio. Aquí puedes ver la cuenta de servicio que configuraste antes para Identity Toolkit.

  4. Junto a la cuenta de servicio, haz clic en > Crear clave. Luego, en el diálogo Crear clave privada, configura el tipo de clave en JSON y haz clic en Crear. Se descargará por ti un archivo JSON que contiene las credenciales de tu cuenta de servicio. Lo necesitarás para inicializar el SDK en el siguiente paso.

  5. Regrese a Cloud Console. En la sección Providers, en el método de acceso &email, abre la página Email Templates. Luego, puedes personalizar las plantillas de tu app.

    En Identity Toolkit, cuando los usuarios restablecen las contraseñas, cambian las direcciones de correo electrónico o verifican sus direcciones de correo electrónico, necesitas obtener un código OOB del servidor de Identity Toolkit y, luego, enviar el código a los usuarios por correo electrónico. Identity Platform envía correos electrónicos según las plantillas que configures sin necesidad de realizar acciones adicionales.

  6. Opcional: Si necesitas acceder a los servicios de Identity Platform en tu servidor, instala el SDK de Firebase.

    1. Puedes instalar el SDK de Admin de Node.js con npm:

      $ npm init
      $ npm install --save firebase-admin
      
    2. 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')
      });
      

Luego, completa los pasos para la migración de la plataforma de tu app: Android, iOS o la Web.

Servidores y JavaScript

Cambios notables

Hay varias diferencias adicionales en la implementación web de Identity Platform respecto de Identity Toolkit.

  • Administración de sesiones web

    Anteriormente, cuando un usuario se autenticó con el widget de Identity Toolkit, se configuraba una cookie para el usuario que se usaba en el inicio de la sesión. Esta cookie tenía una duración de dos semanas y se usó para permitir al usuario usar el widget de administración de cuentas a fin de cambiar la contraseña y la dirección de correo electrónico. Algunos sitios usaron esta cookie para autenticar todas las demás solicitudes de la página. Otros sitios usaron la cookie para crear sus propias cookies a través del sistema de administración de cookies de su marco de trabajo.

    Los SDK cliente de Identity Platform ahora administran los tokens de ID y trabajan con el backend de Identity Platform para mantener la sesión actualizada. El backend vence cuando se producen cambios importantes en la cuenta (como cambios en la contraseña del usuario). Los tokens de ID no se configuran automáticamente como cookies en el cliente web y solo tienen una hora de vida. A menos que desees sesiones de solo una hora, los tokens de ID no son apropiados para usarlos como cookies a fin de validar todas las solicitudes de páginas. En cambio, deberás configurar un objeto de escucha para que cuando el usuario acceda, obtener el token de ID, validar el token y crear tu propia cookie con el sistema de administración de cookies de tu framework.

    Deberás establecer el ciclo de vida de la sesión de tu cookie según las necesidades de seguridad de la aplicación.

  • Flujo de acceso web

    Anteriormente, se redireccionaba a los usuarios a accountchooser.com cuando se iniciaba la sesión para saber qué identificador querían usar. El flujo de la IU de Identity Platform ahora comienza con una lista de métodos de acceso, que incluye una opción de correo electrónico que se dirige a accountchooser.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. Esto facilitará la compatibilidad con usuarios anónimos, usuarios de autenticación personalizados o usuarios de proveedores en los que no se requieran direcciones de correo electrónico.

  • Widget de administración de cuentas

    Este widget proporciona una IU para que los usuarios cambien las direcciones de correo electrónico, cambien las contraseñas o desvinculen sus cuentas de los proveedores de identidad. En este momento, está en desarrollo.

  • Botón o widget de acceso

    Ya no se proporcionan widgets, como el botón de acceso y la tarjeta de usuario. Se pueden crear fácilmente con la API de Firebase Authentication.

  • Sin signOutUrl

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

  • Sin oobActionUrl

    Identity Platform ahora controla el envío de correo electrónico y se configura en Firebase console.

  • Personalización de CSS

    El widget de la IU usa el estilo de Material Design Lite, que agrega animaciones de Material Design de forma dinámica.

Paso 1: Cambia el código del servidor

  1. Si el servidor depende del token de Identity Toolkit (válido por dos semanas) para administrar las sesiones de usuario web, debes convertir el servidor para usar su propia cookie de sesión.

    1. Implementa un extremo a fin de validar el token de Id y configurar la cookie de sesión para el usuario. La app cliente envía el token de ID de Firebase a este extremo.
    2. Si la solicitud entrante contiene tu propia cookie de sesión, puedes considerar el usuario autenticado. De lo contrario, trata la solicitud como no autenticada.
    3. Si no quieres que ninguno de tus usuarios pierda sus sesiones de acceso existentes, debes esperar dos semanas para que venzan todos los tokens de Identity Toolkit, o bien realizar la validación de token doble para tu aplicación web como se describe a continuación en el paso 3.
  2. A continuación, debido a que los tokens de ID son diferentes de los tokens de Identity Toolkit, debes actualizar la lógica de validación de tokens. Instala el SDK de Admin en tu servidor. Si usas un lenguaje no compatible con el SDK de Admin, descarga una biblioteca de validación de tokens JWT para tu entorno y valida el token de forma correcta.

  3. Cuando realizas las actualizaciones anteriores por primera vez, es posible que todavía tengas rutas de acceso de código basadas en 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 a fin de que funcionen las nuevas rutas de código. Si no deseas forzar a los usuarios a actualizar tu app, puedes agregar lógica de validación de servidor adicional que examine el token y determine si necesita 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 trasladarán a Identity Platform, por lo que solo necesitas usar los métodos de verificación de token de Id.

Consulta la Referencia de API web.

Paso 2: Actualiza tu código HTML

  1. Agrega el código de inicialización a la app:

    1. Abre tu proyecto en Cloud Console.
    2. En la página proveedores, haz clic en Detalles de configuración de la aplicación. Se muestra un fragmento de código que inicializa Identity Platform.
    3. Copia y pega el fragmento de inicialización en tu página web.
  2. Agrega el widget de autenticación 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>
    
  3. Quita el SDK de Identity Toolkit de tu app.

  4. Si dependías del token de ID de Identity Toolkit para la administración de sesiones, debes realizar los siguientes cambios en el cliente:

    1. Después de acceder correctamente con Identity Platform, llama a firebase.auth().currentUser.getToken() para obtener un token de ID.

    2. Envía el token de ID al servidor de backend, valídalo y emite tu propia cookie de sesión.

      No dependas únicamente de la cookie de sesión cuando realices operaciones sensibles o cuando envíes solicitudes de edición autenticadas a tu servidor. Deberás proporcionar una protección adicional de falsificación de solicitudes entre sitios (CSRF).

      Si tu framework no brinda protección CSRF, una forma de evitar un ataque sería obtener un token de ID para el usuario que accedió con getToken() y, luego, incluir el token con cada solicitud (la cookie de sesión también se enviará de forma predeterminada). Luego, debes validar el token mediante el SDK de Admin, además de la verificación de cookies de la sesión, que se completó en el framework de backend. Esto dificultará que los ataques de CSRF tengan éxito, ya que el token de ID solo se almacena mediante el almacenamiento web y nunca en una cookie.

    3. Los tokens de Identity Toolkit tienen una validez de dos semanas. Es posible que quieras seguir emitiendo tokens que duren dos semanas o que sea más largo o más corto según los requisitos de seguridad de tu app. Cuando un usuario salga de su sesión, borra la cookie de sesión.

Paso 3: Actualiza las URL de redireccionamiento de IdP

  1. En Cloud Console, abre la sección Proveedores.

  2. Para cada proveedor de acceso federado que admitas, haz lo siguiente:

    1. Haz clic en el nombre del proveedor de acceso.
    2. Copia el URI de redireccionamiento de OAuth.
    3. En el proveedor de acceso, actualiza el URI de redireccionamiento de OAuth.

Android

Paso 1: Agrega Identity Platform a tu app con Firebase

  1. Abre Cloud Console y selecciona tu proyecto de Identity Toolkit.

  2. En la página Proveedores, haz clic en Detalles de configuración de la aplicación, selecciona la pestaña Android y, luego, Comenzar en Firebase. En el cuadro de diálogo Agregar Firebase, proporciona el nombre del paquete de tu app y la huella digital del certificado de firma, y haz clic en Agregar app. El archivo de configuración google-services.json se descargará en tu computadora.

  3. Copia el archivo de configuración en el directorio raíz del módulo de tu app para Android. Este archivo de configuración contiene información del cliente y el proyecto de OAuth de Google.

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

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. También en el archivo build.gradle de nivel de proyecto, agrega una dependencia para incluir el complemento de google-services:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. En el archivo build.gradle a nivel de la app (<var>my-project</var>/<var>app-module</var>/build.gradle) de la app, agrega la siguiente línea después del complemento de Android para Gradle a fin de habilitar el complemento google-services:

    apply plugin: 'com.android.application'
    // Add this line
    apply plugin: 'com.google.gms.google-services'
    

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

  7. También en el archivo build.gradle de nivel de app agrega la dependencia de Firebase Authentication:

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

Paso 2: Quita el SDK de Identity Toolkit

  1. Quita 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 google-services.
  2. Quita el SDK de Identity Toolkit de tu app.

Paso 3: Agrega FirebaseUI a tu app

  1. Agrega FirebaseUI Auth a tu app.

  2. En tu app, reemplaza las llamadas al SDK de Identity Toolkit por llamadas a FirebaseUI.

iOS

Paso 1: Agrega Firebase a tu app

  1. Agrega el SDK cliente a tu app. Para ello, ejecuta los siguientes comandos:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Abre Cloud Console y selecciona tu proyecto de Identity Toolkit.

  3. En la página Proveedores, haz clic en Detalles de configuración de la aplicación, selecciona la pestaña iOS y, luego, haz clic en Comenzar en Firebase. En el cuadro de diálogo Agregar Firebase, proporciona el nombre del paquete de tu app y la huella digital del certificado de firma, y haz clic en Agregar app. El archivo de configuración google-services.json se descargará en tu computadora. En el cuadro de diálogo Agregar Firebase, proporciona el ID del paquete de la app y el ID de App Store. Luego, haz clic en Agregar app. A continuación, se descargará el archivo de configuración GoogleService-Info.plist en tu computadora. Si tienes varios ID de paquete en tu proyecto, cada ID de paquete debe estar conectado en Firebase console para que pueda tener su propio archivo GoogleService-Info.plist.

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

  1. Quita GoogleIdentityToolkit del Podfile de tu app.
  2. Ejecuta el comando pod install.

Paso 3: Agrega FirebaseUI a tu app

  1. Agrega FirebaseUI Auth a tu app.

  2. En tu app, reemplaza las llamadas al SDK de Identity Toolkit por llamadas a FirebaseUI.