Migra de Google Identity Toolkit a Firebase Authentication

Se lanzó la versión más reciente de Google Identity Toolkit Firebase Authentication. En el futuro, se congelarán las funciones de Identity Toolkit y todas las el desarrollo de estas funciones se realizará en Firebase Authentication. Alentamos Los desarrolladores de Identity Toolkit migrarán a Firebase Authentication tan pronto como práctico para sus aplicaciones; Sin embargo, Identity Toolkit sigue funcionando y no quedarán obsoletas sin más anuncios.

Nuevas funciones

Firebase Authentication ya tiene algunas mejoras de funciones significativas en comparación con el Google Identity Toolkit:

  • Acceso a todo Firebase

    Firebase es una plataforma para dispositivos móviles que te permite desarrollar rápidamente aumentar tu base de usuarios y ganar más dinero. Firebase se compone de funciones complementarias que puedes combinar según tus necesidades y incluye infraestructura para lo siguiente: estadísticas para dispositivos móviles, Cloud Messaging, base de datos en tiempo real almacenamiento de archivos, alojamiento estático, configuración remota, informes de fallas en dispositivos móviles y Pruebas de Android.

  • IUs actualizadas

    Reconstruimos por completo los flujos de la IU basados en la UX más reciente de Google. en la investigación. Esto incluye la recuperación de contraseñas, la vinculación de cuentas, la configuración de desambiguación de cuentas que suelen tardar bastante tiempo en programar depurar. 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 sencillas para que coincidan con tu aplicación y, para máxima personalización, la API de Android y iOS se configuraron como de código abierto.

  • Configuración del servidor simplificada

    Facilitamos el uso de Firebase Authentication para los desarrolladores. Con Identity Toolkit, observamos que muchos desarrolladores decidieron no implementar de recuperación de correo electrónico e imposibilitó la recuperación del usuario sus cuentas si olvidan la contraseña. Firebase Authentication puede enviar mensajes de verificación por correo electrónico, restablecimiento de contraseña y cambio de contraseña a El usuario y el texto se pueden personalizar fácilmente. para tus usuarios. Además, ya no es necesario alojar el Widgets de IU para alojar redireccionamientos y y completar las operaciones de cambio de contraseña.

  • Nueva Consola del administrador

    Firebase tiene una nueva consola para desarrolladores y la sección Autenticación te permite ver, modificar y borrar 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 las plantillas de correo electrónico.

  • SDKs nuevos

    Todas las APIs del servidor de Identity Toolkit ahora están disponibles de forma nativa con cada de nuestras bibliotecas cliente (Android, iOS y la Web). Los desarrolladores podrán firmar registrar y registrar usuarios nuevos y antiguos, acceder a propiedades del usuario, vincular, actualizar y borrar cuentas, restablecer contraseñas y mucho más sin depender de una IU fija. Si lo prefieres, puedes crear manualmente todo tu flujo de acceso y experiencia sobre esta API.

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

    Con Identity Toolkit, las apps creaban su propio estado de sesión basado en de autenticación inicial desde Identity Toolkit. Firebase Auth usa un servicio de backend que toma un token de actualización, acuñado a partir de la 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 no puedas generar nuevos tokens de acceso, con lo cual se inhabilita el acceso hasta el usuario se vuelva a autenticar en ese dispositivo.

  • Autenticación anónima y con GitHub

    Firebase Authentication admite dos tipos nuevos de autenticación: GitHub y anónimo. El acceso anónimo se puede usar para crear un ID de usuario único sin que requieran que el usuario pase por algún proceso de acceso o registro. Con un usuario anónimo, ahora puedes realizar llamadas autenticadas a la API, como lo harías con un usuario normal. Cuando el usuario decide registrarse para obtener una cuenta, todas 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 donde quieras interactuar al usuario antes de enviarle el flujo de registro.

Diferencias entre funciones

Por el momento, algunas funciones de Identity Toolkit no están disponibles en Firebase Authentication, mientras que otras funciones se rediseñaron y funcionan de manera diferente. Es posible que elijas no migrar de inmediato si estas funciones son importantes para tu app. En muchos casos, es posible que estas funciones no sean importantes es posible que haya resguardos sencillos que te permitirán continuar con la migración.

Diferencias en el servidor

El servicio principal de Identity Toolkit con sus APIs de REST subyacentes, la cuenta la lógica de validación y la base de datos principal del usuario. Pero hay algunas características y la forma en que integras Firebase Authentication en tu servicio ha cambiado.

  • Proveedores de identidad

    No se admiten PayPal ni AOL. Usuarios con de estos IDP aún pueden acceder a tu aplicación con el de recuperación de contraseñas y configurar una contraseña para su cuenta.

  • Bibliotecas de servidores

    Actualmente, existen los SDK de administrador de Firebase. que está disponible para Java, Node.js, Python, Go y C#.

  • Correos electrónicos de administración de la cuenta

    Los mensajes de restablecimiento de contraseña, verificación de correo electrónico y cambio de correo electrónico pueden realizada por Firebase o desde la dirección tu propio servidor de correo electrónico. Actualmente, las plantillas de correo electrónico de Firebase solo ofrecen personalización.

  • 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 con un vínculo para continuar el envío de cambio de dirección.

    Para confirmar el cambio de dirección de correo electrónico, Firebase envía un correo de revocación a la dirección de correo electrónico anterior con un vínculo para revertir el cambio.

  • Lanzamiento de IdP

    Identity Toolkit pudo agregar proveedores de identidad a tu acceso de manera gradual para poder experimentar con el impacto solicitudes de asistencia. Se quitó esta función 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 proporcionan Identity Toolkit La API de REST se empaqueta en los SDK cliente disponibles para Android, iOS y JavaScript: Puedes usar el SDK para acceder y registrar usuarios. acceder al usuario información del perfil; vincular, actualizar y eliminar cuentas y restablecer contraseñas con el SDK de cliente en lugar de comunicarse con el servicio de backend a través de Llamadas REST.

  • FirebaseUI Auth

    Todos los flujos de IU que administran el acceso, el registro, la recuperación de contraseñas y la vinculación de cuentas se volvió a compilar con los SDK de autenticación de Frebase. Están disponibles como SDK de código abierto para iOS y Android que te permiten hacer lo siguiente: personalizar por completo los flujos de formas imposibles con Identity Toolkit.

Entre las diferencias adicionales, se incluyen las siguientes:

  • Sesiones y migración

    Porque las sesiones se administran de manera diferente en Identity Toolkit y Firebase Authentication, la capacidad de tus usuarios las sesiones existentes se finalizarán el el SDK, y tus usuarios tendrán que volver a acceder.

Antes de comenzar

Antes de migrar de Identity Toolkit a Firebase Authentication, debes imprescindible

  1. Abre Firebase console, haz clic en Importa el proyecto de Google y selecciona tu proyecto de Identity Toolkit.

  2. Haz clic en > Permisos para abrir la IAM y Página Administrador.

  3. Abre la Cuentas de servicio. Aquí puedes ver la cuenta de servicio configurados previamente para Identity Toolkit.

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

  5. Regresa a Firebase console. En la sección Auth, abre la página Plantillas de correo electrónico. En esta página personalizar las plantillas de correo electrónico de tu app.

    En Identity Toolkit, cuando los usuarios restablecen contraseñas, cambian las direcciones de correo electrónico y las direcciones de correo electrónico verificadas, debías obtener un código OOB del servidor de Identity Toolkit y, luego, envíe el código a los usuarios por correo electrónico. Firebase envía correos electrónicos basados en las plantillas que configuras sin modificar se requieren acciones adicionales.

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

    1. Puedes instalar el módulo Node.js de Firebase 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')
      });
      

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

Servidores y JavaScript

Cambios destacados

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

  • Administración de sesiones web

    Anteriormente, cuando un usuario se autenticaba con el widget de Identity Toolkit, Se estableció una cookie para el usuario que se usó para iniciar la sesión. Esta cookie tuvo una vida útil de dos semanas y se utilizó para permitir que el usuario utilizara el widget de administración de la cuenta para cambiar la contraseña y la dirección de correo electrónico. Algunos utilizaban esta cookie para autenticar todas las demás solicitudes de páginas del sitio. Otros sitios utilizaron la cookie para crear sus propias cookies a través de su en el sistema de administración de cookies del framework.

    Los SDK cliente de Firebase ahora administran los tokens de ID de Firebase. y trabajar con el backend de Firebase Authentication para mantener la sesión actualizada. El backend expira las sesiones cuando cambia la cuenta importante (como las contraseñas). Los tokens de ID de Firebase no se establecidas como cookies en el cliente web y que tienen un ciclo de vida de una hora. A menos que quieres que las sesiones de solo una hora sean de una hora, no es apropiado que se generen tokens de ID de Firebase como la cookie para validar todas las solicitudes de su página. En cambio, necesitas configurar un objeto de escucha para cuando el usuario acceda, obtener el token de ID de Firebase validar el token y crear la tu propia cookie a través del sistema de administración de cookies de tu marco.

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

  • Flujo de acceso web

    Anteriormente, se redireccionaba a los usuarios a accountchooser.com cuando se restringía el acceso para saber qué identificador quería usar el usuario. Firebase Auth El flujo de la IU ahora comienza con una lista de métodos de acceso, incluido un correo electrónico que se dirige a accountchooser.com para la Web y usa el API de hintRequest activada Android Además, ya no se requieren direcciones de correo electrónico en el de la IU de Google. Esto facilitará la asistencia a usuarios anónimos y usuarios de autenticación o los 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, y desvincular sus cuentas de los proveedores de identidad. Actualmente es en desarrollo.

  • Widget o botón de acceso

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

  • Sin signOutUrl

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

  • Sin oobActionUrl

    Ahora Firebase se encarga del envío de correos electrónicos y se configura en la plataforma la consola de Cloud.

  • Personalización de CSS

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

Paso 1: Cambia el código del servidor

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

    1. Implementa un extremo para validar el token de ID de Firebase. y configura la cookie de sesión para el usuario. La app cliente envía el Token de ID de Firebase para este extremo.
    2. Si la solicitud entrante contiene tu propia cookie de sesión, puedes considera al usuario autenticado. De lo contrario, trata la solicitud como sin autenticar.
    3. Si no quieres que ninguno de tus usuarios pierda su acceso debes esperar dos semanas para recibir todos los tokens de Identity Toolkit que caduque o realizar la validación de doble token para su aplicación web como se describe en el paso 3.
  2. Luego, debido a que los tokens de Firebase son diferentes de Identity Toolkit tokens, debes actualizar la lógica de validación del token. Instala el SDK del servidor de Firebase en tu servidor. o, si utilizas un lenguaje no compatible con el SDK del servidor de Firebase, descarga una biblioteca de validación de tokens JWT para tu entorno y validar correctamente el token.

  3. Cuando realices las actualizaciones anteriores por primera vez, es posible que aún tengas instrucciones de código se basan en tokens de Identity Toolkit. Si tienes aplicaciones para iOS o Android, los usuarios deberán actualizar a la nueva versión de la aplicación para tener funcionan las nuevas instrucciones de código. Si no quieres forzar a tus usuarios a actualizar tu app, puedes agregar lógica de validación del servidor adicional que examine token y determina si debe usar el SDK de Firebase o el SDK de Identity Toolkit para validar el token. Si solo tienes una página web de la aplicación, todas las solicitudes de autenticación nuevas se moverán a Firebase y, por lo tanto, solo debes usar el token de Firebase de verificación de identidad.

Consulta la Referencia de la API de Firebase Web.

Paso 2: Actualiza tu código HTML

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

    1. Abre el proyecto en Firebase console.
    2. En la página Overview, haz clic en Add App y, luego, en Add Firebase to your aplicación web. Se muestra un fragmento de código que inicializa Firebase.
    3. Copia y pega el fragmento de inicialización en tu página web.
  2. Agregar 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>
    
  3. Quita el SDK de Identity Toolkit de tu app.

  4. Si dependías del token de ID de Identity Toolkit para administrar las sesiones, puedes debe realizar los siguientes cambios en el cliente:

    1. Después de acceder correctamente con Firebase, obtén un token de ID de Firebase antes del llamando a firebase.auth().currentUser.getToken().

    2. Enviar el token de ID de Firebase al servidor de backend, validarlo y emitir tu propia cookie de sesión.

      No confíe solo en la cookie de sesión cuando realice acciones o enviar solicitudes de edición autenticadas a tu servidor. Tú deberá proporcionar falsificación de solicitudes entre sitios adicional (CSRF) protección.

      Si tu framework no brinda 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() e incluye el token con cada solicitud (la sesión las cookies también se enviarán de forma predeterminada). Luego, validarás ese token usando el SDK del servidor de Firebase además de la verificación de cookies de sesión que completó tu framework de backend. Esto hará que sea más difícil que los ataques CSRF tienen éxito, ya que el token de ID de Firebase solo se almacena mediante en el almacenamiento web y nunca en una cookie.

    3. Los tokens de Identity Toolkit son válidos por dos semanas. Te recomendamos continúa emitiendo tokens que duran dos semanas, o bien, tal vez quieras más o menos 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

  1. En Firebase console, abre la sección Authentication y haz clic en el Método de acceso.

  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 la consola para desarrolladores del proveedor de acceso, actualiza el redireccionamiento de OAuth. URI

Android

Paso 1: Agrega Firebase a tu app

  1. Abre Firebase console. selecciona tu proyecto de Identity Toolkit, que ya importaste.

  2. 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 paquete de tu app y la huella digital del certificado de firma. Luego, haz clic en Agregar app. El Luego, se descargará el archivo de configuración google-services.json en tu que ya almacenaste en tu computadora.

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

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

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

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

    // 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 tu aplicación para usar Firebase.

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

    compile 'com.google.firebase:firebase-auth:23.0.0'
    compile 'com.google.android.gms:play-services-auth:21.2.0'
    

Paso 2: Quita el SDK de Identity Toolkit

  1. Quita la configuración de Identity Toolkit de AndroidManifest.xml . Esta información se incluye en el archivo google-service.json y cargado por el complemento google-services.
  2. Quita el SDK de Identity Toolkit de tu app.

Paso 3: Agrega FirebaseUI a tu app

  1. Agregar FirebaseUI Auth a tu app.

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

iOS

Paso 1: Agrega Firebase a tu app

  1. Para agregar el SDK de Firebase a tu app, ejecuta los siguientes comandos:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Abre Firebase console. selecciona tu proyecto de Identity Toolkit, que ya importaste.

  3. 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, ingresa el ID del paquete de tu app y ID de App Store y, luego, haz clic en Agregar aplicación. El Luego, se descargará el archivo de configuración GoogleService-Info.plist en tu que ya almacenaste en tu computadora. Si tienes varios IDs de paquete en tu proyecto, cada ID de paquete debe estar conectado en la consola de Firebase para que pueda tener su propio GoogleService-Info.plist.

  4. Copia el archivo de configuración en la raíz de tu proyecto de Xcode y agrégalo todos los objetivos.

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. Agregar FirebaseUI Auth a tu app.

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