La versión más reciente de Google Identity Toolkit se lanzó como Identity Platform y Firebase Authentication . En el futuro, el trabajo de funciones en Identity Toolkit se congelará; todo el desarrollo de funciones nuevas se realizará en Identity Platform y Firebase Authentication. Alentamos a los desarrolladores de Identity Toolkit a cambiar a estas plataformas tan pronto como sea práctico para sus aplicaciones.
Nuevas características
Identity Platform ya cuenta con importantes mejoras de funciones en comparación con Google Identity Toolkit:
Nueva consola de administración
Identity Platform tiene una nueva consola para desarrolladores que le permite ver, modificar y eliminar a sus usuarios; esto puede ser útil 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 métodos de Autenticación
Identity Platform es compatible con los estándares de federación empresarial, como SAML y OIDC, lo que le permite escalar aplicaciones y servicios SaaS. Identity Platform también ofrece soporte para proveedores como GitHub, Microsoft, Yahoo y más. Puede usar el inicio de sesión anónimo 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; esto le permite 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 valioso para escenarios como carritos de compras del lado del servidor u otras aplicaciones en las que desea involucrar al usuario antes de enviarlo a través de un flujo de registro.
Escale con confianza con acuerdos de nivel de servicio y soporte en la nube
Identity Platform se basa en la infraestructura confiable de Google y proporciona acuerdos de nivel de servicio y soporte de Google Cloud. Esto significa que puede escalar su servicio con confianza y confiar en que Google le brindará la resistencia, la disponibilidad y la escalabilidad que necesita.
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
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. Identity Platform 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.
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. Identity Platform utiliza un servicio de back-end 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.
Diferencias de características
Algunas funciones de Identity Toolkit no están disponibles actualmente en Identity Platform, 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 Identity Platform en su servicio han cambiado.
Proveedores de identidad
Paypal y AOL no son compatibles. Los usuarios con cuentas de estos IDP todavía 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 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 solo ofrecen una personalización limitada desde la interfaz de usuario, pero se pueden personalizar aún más con los SDK de administrador.
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 Identity Platform, las funciones proporcionadas por Google Identity Toolkit se dividen en dos componentes:
SDK de cliente y servidor
En Identity Platform, la funcionalidad proporcionada por la API REST de Identity Toolkit se ha empaquetado 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.
Widget de interfaz de usuario
Todos los flujos de la interfaz de usuario que administran el inicio de sesión, el registro, la recuperación de contraseña y la vinculación de cuentas se han reconstruido utilizando los SDK de cliente y se han empaquetado como un widget de inicio de sesión. Están disponibles como SDK de código abierto para iOS , Android y Web , y 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 e Identity Platform, 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
Antes de poder migrar de Identity Toolkit a Identity Platform, debe:
Abra la consola de Cloud y seleccione su proyecto de Identity Toolkit.
En Marketplace, vaya a Identity Platform y seleccione 'Activar Identity Platform'
Abra la página Cuentas de servicio . Aquí puede ver la cuenta de servicio que configuró previamente para Identity Toolkit.
Junto a la cuenta de servicio, haz clic en more_vert > 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.
Vuelva a la consola de la nube . En la sección Proveedores, dentro del método de inicio de sesión 'Correo electrónico/Contraseña', abra la página Plantillas de correo electrónico . A continuación, puede personalizar las plantillas de su aplicación.
En Identity Toolkit, cuando los usuarios restablecían contraseñas, cambiaban direcciones de correo electrónico o verificaban sus direcciones de 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. Identity Platform envía correos electrónicos en función de las plantillas que configure sin que se requieran acciones adicionales.
Opcional : si necesita acceder a los servicios de Identity Platform en su servidor, instale Firebase SDK.
Puede instalar el SDK de administrador de Node.js con
npm
:$ npm init $ npm install --save firebase-admin
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') });
Servidores y JavaScript
Cambios notables
Hay una serie de diferencias adicionales en la implementación web de Identity Platform 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 Identity Platform ahora administran tokens de identificación y funcionan con el backend de Identity Platforms 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 identificación 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 identificación 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 identificación , 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 la interfaz de usuario de Identity Platform ahora comienza con una lista de métodos de inicio de sesión, incluida una opción de correo electrónico que va aaccountchooser.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. 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 Identity Platform y se configura en la consola de Firebase.
personalización CSS
El widget de la interfaz de usuario utiliza el estilo Material Design Lite , que agrega dinámicamente animaciones de Material Design.
Paso 1: cambiar el código del servidor
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.
- Implemente un punto final para validar el token de identificación 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.
- 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.
- 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.
A continuación, debido a que los tokens de Id son diferentes a los tokens de Identity Toolkit, debe actualizar su lógica de validación de tokens. Instale Admin SDK en su servidor; o, si usa un idioma que no es compatible con Admin SDK, descargue una biblioteca de validación de tokens JWT para su entorno y valide correctamente el token .
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 Identity Platform y, por lo tanto, solo necesita usar los métodos de verificación del token de identificación.
Consulte la referencia de la API web .
Paso 2: Actualiza tu HTML
Agregue el código de inicialización a su aplicación:
Agregue el widget de autenticación a su 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>
Elimina el SDK de Identity Toolkit de tu aplicación.
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:
Después de iniciar sesión con éxito en Identity Platform, obtenga un token de identificación llamando a
firebase.auth().currentUser.getToken()
.Envíe el token de identificación al servidor back-end, 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 brinda protección CSRF, una forma de evitar un ataque sería obtener un token de identificación 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 con el SDK de administrador 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 identificación solo se almacena mediante el almacenamiento web y nunca en una cookie.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
Para cada proveedor de inicio de sesión federado que admita, haga lo siguiente:
- Haga clic en el nombre del proveedor de inicio de sesión.
- Copie el URI de redireccionamiento de OAuth.
- En la consola para desarrolladores del proveedor de inicio de sesión, actualice el URI de redirección de OAuth.
Androide
Paso 1: Agregue Identity Platform a su aplicación con Firebase
Abre Cloud Console y selecciona tu proyecto de Identity Toolkit.
En la página Proveedores, haga clic en Detalles de configuración de la aplicación , seleccione la pestaña Android y luego haga clic en Comenzar en Firebase . 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.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.
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óndefaultConfig
:defaultConfig { ….. applicationId "com.your-app" }
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' } }
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 después del complemento Android Gradle para habilitar el Complemento de servicios de Google: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 su aplicación para usar Firebase.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.1' compile 'com.google.android.gms:play-services-auth:20.0.1'
Paso 2: Elimina el SDK de Identity Toolkit
- Quite la configuración de Identity Toolkit del archivo
AndroidManifest.xml
. Esta información se incluye en el archivogoogle-service.json
y se carga mediante el complemento de servicios de google. - Elimina el SDK de Identity Toolkit de tu aplicación.
Paso 3: Agregue FirebaseUI a su aplicación
Agrega FirebaseUI Auth a tu aplicación.
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
Agregue el SDK del cliente a su aplicación ejecutando los siguientes comandos:
$ cd your-project directory $ pod init $ pod 'Firebase'
Abre Cloud Console y selecciona tu proyecto de Identity Toolkit.
En la página Proveedores, haga clic en Detalles de configuración de la aplicación , seleccione la pestaña iOS y luego haga clic en Comenzar en Firebase . 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. 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ónGoogleService-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 archivoGoogleService-Info.plist
.Copie el archivo de configuración en la raíz de su proyecto Xcode y agréguelo a todos los destinos.
Paso 2: Elimina el SDK de Identity Toolkit
- Elimina
GoogleIdentityToolkit
del Podfile de tu aplicación. - Ejecute el comando
pod install
del módulo.
Paso 3: Agregue FirebaseUI a su aplicación
Agrega FirebaseUI Auth a tu aplicación.
En su aplicación, reemplace las llamadas al SDK de Identity Toolkit con llamadas a FirebaseUI.