Migra de Google Identity Toolkit a Identity Platform de Google Cloud

La versión más reciente de Google Identity Toolkit se lanzó como Identity Platform y Firebase Authentication. En el futuro, se congelará el trabajo de funciones de Identity Toolkit. completamente nuevo el desarrollo de funciones se realizará en Identity Platform y Firebase Autenticación. Recomendamos a los desarrolladores de Identity Toolkit que se cambien a estas plataformas apenas sea práctico para sus aplicaciones.

Nuevas funciones

Identity Platform ya tiene mejoras significativas en las funciones en comparación con Google Identity Toolkit:

  • Nueva Consola del administrador

    Identity Platform tiene un nueva consola para desarrolladores que te permite ver, modificar y borrar usuarios; esto puede ser útil depurar los 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 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 de SaaS. Identity Platform también ofrece compatibilidad con proveedores como GitHub, Microsoft, Yahoo y muchos más. Puedes usar el acceso anónimo para crear un ID de usuario único sin solicitar al usuario que complete un proceso de acceso o registro esto permite que te permite realizar llamadas autenticadas a la API como lo harías con un usuario común. Cuándo el usuario decide registrarse para obtener una cuenta, toda la actividad se conserva con con el mismo ID de usuario. Esto es valioso para situaciones como los carritos de compras del servidor o en otras aplicaciones en las que deseas atraer al usuario antes de enviarlo a un flujo de registro.

  • Escala con confianza con los Acuerdos de Nivel de Servicio y la asistencia en la nube

    Identity Platform se compiló en la infraestructura de Google de confianza y proporciona Acuerdos de Nivel de Servicio y asistencia de Google Cloud. Esto significa que puedes escalar tu servicio con confianza y confiar en Google para que proporcione la resiliencia, la disponibilidad y la escalabilidad que necesitas.

  • Acceso a todos los productos de 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 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

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

    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. Identity Platform puede enviar mensajes de verificación por correo electrónico, restablecimiento de contraseña y cambio de contraseña al usuario, y el texto se puede personalizar fácilmente para tus usuarios. Además, ya no es necesario alojar el Los widgets de la IU para alojar redireccionamientos y y completar las operaciones de cambio de contraseña.

  • Nuevos SDKs

    Todas las APIs del servidor de Identity Toolkit ahora están disponibles de forma nativa con cada de nuestras bibliotecas cliente (Android, iOS, 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 hacer mucho más sin depender de una IU fija. Si lo prefieres, puedes compilar manualmente tu propio flujo de acceso y experiencia completos 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 según el evento de autenticación inicial de Identity Toolkit. Identity Platform 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 no puedas generar nuevos tokens de acceso, lo que inhabilita el acceso hasta el usuario se vuelva a autenticar en ese dispositivo.

Diferencias entre funciones

Actualmente, algunas funciones de Identity Toolkit no están disponibles en Identity Platform, mientras que otras se han rediseñado y funcionan de manera 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 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 funciones y la forma en que integras Identity Platform en tu servicio ha cambiado.

  • Proveedores de identidad

    PayPal y AOL no son compatibles. 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 Admin 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 solo ofrecen una personalización limitada desde 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, 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 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 pudo agregar proveedores de identidad a tu acceso de manera gradual para poder experimentar con el impacto solicitudes de asistencia. Esta función se quitó de Firebase Authentication.

Diferencias del cliente

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

  • SDKs de clientes y servidores

    En Identity Platform, la funcionalidad que proporciona la API de REST de Identity Toolkit se empaquetó en SDKs de cliente 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.

  • Widget de la IU

    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 cliente y se empaquetaron como un widget de acceso. Están disponibles como SDK de código abierto para iOS, Android y Web y te permiten personalizar completamente los flujos de maneras que no son posibles 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 Identity de Google Cloud, 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 Identity Platform, debe:

  1. Abre la consola de Cloud y selecciona tu proyecto de Identity Toolkit.

  2. Desde Marketplace, navega para Identity Platform y selecciona "Habilitar Identity Platform"

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

  4. Junto a la cuenta de servicio, haz clic en > Crear clave. Luego, 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 la consola de Cloud. En la sección Proveedores, dentro de método de acceso, abre la página Plantillas de correo electrónico. Luego, puedes personalizar las plantillas de tu app.

    En Identity Toolkit, cuando los usuarios restablecen contraseñas, cambian de dirección de correo electrónico o verificaron sus direcciones de correo electrónico, 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. Identity Platform envía correos electrónicos basados en las plantillas que configuras sin se requieren acciones adicionales.

  6. Opcional: Si necesitas acceder a los servicios de Identity Platform en tu , 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')
      });
      

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

Servidores y JavaScript

Cambios destacados

Hay una serie de diferencias adicionales en la implementación web de Identity Platform de 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 cliente de Identity Platform ahora administran Tokens de ID y trabajar con el backend de Identity Platforms 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 no se crean automáticamente establecidas como cookies en el cliente web y que tienen un ciclo de vida de una hora. A menos que quieres sesiones de solo una hora, no es apropiado que los tokens de ID como la cookie para validar todas las solicitudes de su página. En su lugar, deberás configurar un objeto de escucha para cuando el usuario acceda, obtener el token de ID, 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 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. Identity Platform 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 la IU. 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, 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 procesar la devolución de llamada.

  • Sin oobActionUrl

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

  • Personalización de CSS

    El widget de la IU 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 se basa en el 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.

    1. Implementar un extremo para cómo validar el token de ID y configura 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 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. A continuación, como los tokens de ID son diferentes de los tokens de Identity Toolkit, debes actualizar tu lógica de validación de tokens. Instala el SDK de Admin en tu servidor o, si usas un lenguaje que no es 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 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 Identity Platform y, por lo tanto, solo necesitas usar el token de ID de verificación de identidad.

Consulta la Referencia de la 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 la consola de Cloud.
    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 Authentication 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 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, validarlo y emitir tu propia cookie de sesión.

      No te bases solo en la cookie de sesión cuando realices operaciones sensibles o envíes 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 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, deberías validar ese token con el SDK de Admin, 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 solo se almacena con 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 la consola de Cloud, abre la pestaña Providers sección.

  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 Identity Platform a tu app con Firebase

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

  2. En la página Proveedores, haz clic en Detalles de la configuración de la aplicación, selecciona la pestaña Android y, luego, haz clic en Comenzar en Firebase. En el diálogo Agregar Firebase, ingresa el nombre y la firma del paquete de tu app huella digital del certificado y haz clic en Agregar aplicación. El google-services.json de configuración de Terraform se descarga 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 tu app en la sección defaultConfig:

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. 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'
     }
    }
    
  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 después del complemento de Android para Gradle para habilitar el complemento de google-services:

    apply plugin: 'com.android.application'
    // Add this line
    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 del archivo 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. Agrega 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. Ejecuta los siguientes comandos para agregar el SDK cliente a tu app:

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

  3. En la página Proveedores, haz clic en Detalles de configuración de la aplicación y selecciona la app para iOS. y haz clic en Get Started in Firebase. En el diálogo para 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. En el diálogo Agregar Firebase, ingresa el ID de tu app el ID del paquete y el ID de App Store. Luego, haz clic en Agregar aplicación. Luego, el archivo de configuración GoogleService-Info.plist se descarga en tu que ya almacenaste 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 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.