Uno de los grandes problemas que concierne a la seguridad de nuestras identidades online año tras año es la pésima política de contraseñas que los usuarios solemos tener en nuestras diferentes cuentas. Repetir contraseñas en múltiples servicios, usar contraseñas genéricas, no tener activado un segundo factor de autenticación o simplemente tener nuestras credenciales apuntadas en texto plano son algunos de los ejemplos que ponen cada día en riesgo la seguridad de nuestros servicios.
A lo largo de los años han sido ya muchas empresas las que han propuesto soluciones a estos problemas: gestores de contraseñas, diferentes métodos de autenticación con segundo factor o fortificación de contraseña en base a unas reglas predeterminadas. Medidas que grandes empresas como Google, Microsoft y Apple han sabido implementar en sus productos.
Así, como comentamos anteriormente en este blog Apple ha ampliado las herramientas de gestión de contraseñas en iOS 12, añadiendo funcionalidades como la generación de contraseñas automáticas, la identificación de contraseñas ya usadas y el relleno automático de códigos TOTP mediante Siri. Esto se suma a características ya existentes como la integración de iCloud Keychain en apps nativas o la gestión de contraseñas en todo el ecosistema de dispositivos Apple. Además de todo esto, iOS 12 ha habilitado el soporte de gestores de contraseñas de terceros, como 1Password o Lastpass.
Todas estas novedades se han puesto a disposición de los desarrolladores, para hacer que nuestras aplicaciones sean lo más seguras posibles. Algunas de las características son soportadas nativamente por el sistema, como el relleno automático del sistema o la sugerencia de códigos TOTP, que infieren en los cuadros de texto, detectando si pertenecen a una inserción de contraseña o de código TOTP para aplicar las sugerencias. Aún así desde Apple recomiendan añadir las líneas de código precisas para hacer que estas funcionalidades sean soportadas al 100% de forma nativa, así que pasamos a describir como adaptar tu app para que soporte las nuevas medidas de seguridad en iOS 12.
Para poder implementar todo lo que vamos a explicar en la siguiente parte del artículo, es necesario pertenecer al Programa de desarrolladores de Apple. En este ejemplo nos basaremos en el código descrito en los artículos de Lyndsey Scott y Vineet Choudhary, donde explican en profundidad como montar un servicio web para sincronizar la autenticación de la aplicación móvil mediante el apple-app-site-association. Nosotros nos centraremos en la parte que concierne a iOS.
Lo primero sería acceder al portal de desarrolladores de Apple. Allí, nos dirigiremos a la sección de Certificates, Identifiers & Profiles, para crear un nuevo App ID pinchando en en el botón de Add. Allí añadiremos nuestro Bundle ID, que se corresponderá con el de la aplicación, para posteriormente dentro de Application Services añadir las opciones de Associated Domains y AutoFill Credential Provider, que como sus nombres indican, permiten asociar un dominio existente a nuestra aplicación y permiten rellenar las credenciales de nuestra app a través de iCloud Keychain. Una vez registrada la app, habría que añadir el Team ID y App ID al fichero apple-app-site-association de nuestro servicio.
Ya en Xcode, iremos al fondo de la pestaña General. Allí, deberemos añadir AuthenticationServices.framework dentro de la sección Linked Frameworks and Libraries para habilitar el framework de gestión de autenticación en nuestra aplicación. Posteriormente en Capabilities habilitaremos Associated Domains, añadiendo el dominio de nuestro servidor y AutoFill Credential Provider para dejar habilitadas las funciones en nuestra app.
Una vez hecho eso, solo tendremos que implementar el mecanismo de autenticación contra nuestro servidor y editar el tipo de Text Field que queremos en cada parte del registro. Para el nombre de usuario pondremos Username en el tipo de contenido. Dentro de la pantalla de acceso pondremos Password en el tipo de Text Field, mientras que en la pantalla de registro pondremos New Password, para habilitar la función de sugerencia de contraseña. Por último pondremos el tipo .oneTimeCode al textfield que se encargará de introducir el TOTP enviado por SMS.
Por último, solo tendremos que implementar las reglas de validación de contraseñas que queramos implementar en nuestro servicio. Para ello, Apple tiene habilitada una página donde probar las reglas y generar los patrones para nuestra app. Una vez tengamos las reglas que nos interesen, las introduciremos en la casilla Password Rule del Text Field del tipo New Password para que dentro de la sugerencia de nueva contraseña se adapte a nuestros requisitos.
Así, dejamos un video de un prototipo funcional de una aplicación que hemos creado siguiendo los pasos anteriores siguiendo el código fuente del artículo de Lyndsey Scott, allí podréis descargar el código fuente de la aplicación con todo lo necesario para implementarlo en vuestras apps.
A lo largo de los años han sido ya muchas empresas las que han propuesto soluciones a estos problemas: gestores de contraseñas, diferentes métodos de autenticación con segundo factor o fortificación de contraseña en base a unas reglas predeterminadas. Medidas que grandes empresas como Google, Microsoft y Apple han sabido implementar en sus productos.
Así, como comentamos anteriormente en este blog Apple ha ampliado las herramientas de gestión de contraseñas en iOS 12, añadiendo funcionalidades como la generación de contraseñas automáticas, la identificación de contraseñas ya usadas y el relleno automático de códigos TOTP mediante Siri. Esto se suma a características ya existentes como la integración de iCloud Keychain en apps nativas o la gestión de contraseñas en todo el ecosistema de dispositivos Apple. Además de todo esto, iOS 12 ha habilitado el soporte de gestores de contraseñas de terceros, como 1Password o Lastpass.
Figura 1: iCloud Keychain, Autofill Password y Sugerencias de Contraseñas en iOS 12 |
Para poder implementar todo lo que vamos a explicar en la siguiente parte del artículo, es necesario pertenecer al Programa de desarrolladores de Apple. En este ejemplo nos basaremos en el código descrito en los artículos de Lyndsey Scott y Vineet Choudhary, donde explican en profundidad como montar un servicio web para sincronizar la autenticación de la aplicación móvil mediante el apple-app-site-association. Nosotros nos centraremos en la parte que concierne a iOS.
Lo primero sería acceder al portal de desarrolladores de Apple. Allí, nos dirigiremos a la sección de Certificates, Identifiers & Profiles, para crear un nuevo App ID pinchando en en el botón de Add. Allí añadiremos nuestro Bundle ID, que se corresponderá con el de la aplicación, para posteriormente dentro de Application Services añadir las opciones de Associated Domains y AutoFill Credential Provider, que como sus nombres indican, permiten asociar un dominio existente a nuestra aplicación y permiten rellenar las credenciales de nuestra app a través de iCloud Keychain. Una vez registrada la app, habría que añadir el Team ID y App ID al fichero apple-app-site-association de nuestro servicio.
Figura 2: App ID de la aplicación |
Ya en Xcode, iremos al fondo de la pestaña General. Allí, deberemos añadir AuthenticationServices.framework dentro de la sección Linked Frameworks and Libraries para habilitar el framework de gestión de autenticación en nuestra aplicación. Posteriormente en Capabilities habilitaremos Associated Domains, añadiendo el dominio de nuestro servidor y AutoFill Credential Provider para dejar habilitadas las funciones en nuestra app.
Una vez hecho eso, solo tendremos que implementar el mecanismo de autenticación contra nuestro servidor y editar el tipo de Text Field que queremos en cada parte del registro. Para el nombre de usuario pondremos Username en el tipo de contenido. Dentro de la pantalla de acceso pondremos Password en el tipo de Text Field, mientras que en la pantalla de registro pondremos New Password, para habilitar la función de sugerencia de contraseña. Por último pondremos el tipo .oneTimeCode al textfield que se encargará de introducir el TOTP enviado por SMS.
Por último, solo tendremos que implementar las reglas de validación de contraseñas que queramos implementar en nuestro servicio. Para ello, Apple tiene habilitada una página donde probar las reglas y generar los patrones para nuestra app. Una vez tengamos las reglas que nos interesen, las introduciremos en la casilla Password Rule del Text Field del tipo New Password para que dentro de la sugerencia de nueva contraseña se adapte a nuestros requisitos.
Así, dejamos un video de un prototipo funcional de una aplicación que hemos creado siguiendo los pasos anteriores siguiendo el código fuente del artículo de Lyndsey Scott, allí podréis descargar el código fuente de la aplicación con todo lo necesario para implementarlo en vuestras apps.
No hay comentarios:
Publicar un comentario