martes, 3 de octubre de 2017

Aprende a crear aplicaciones GO protegidas con Latch en 1 hora


Con el nuevo SDK de Latch para GO puedes añadir a tus aplicaciones en GO! una capa de protección de Latch.

En CodeTalk for Devs durante una sesión en vídeo de una hora y sencillo se sigue el uso del SDK de Latch para GO desde el principio hasta su funcionamiento final en las apps.


Figura 2: CodeTalk4Devs: Latch en Go!

El SDK se ha decicido integrar en uno de los lenguajes que mayor popularidad está ganando en los últimos meses. Hablamos del lenguaje Go, desarrollado por Google. Antes de nada, indicar que esta versión de SDK Latch para Go no es oficial de ElevenPaths.

Una de las ventajas de Go es su sintaxis, la cual es bastante parecida al Lenguaje C por lo que no será difícil acercarte a Go si tienes conocimientos de este lenguaje. Además, ha heredado la mayoría de las características (y mejorando otras) que han hecho del Lenguaje C una referencia en el sector.


Figura 2: SDK de Latch para Go (no oficial)

Antes de comenzar, suponemos que tienes ya una cuenta de Latch como desarrollador. También será necesario que tengas instalado Go para el sistema operativo que estés utilizando Windows, Linux o macOS. El último paso es tener instalado Latch para tu Smartphone. Esto puedes hacerlo directamente desde la tienda de la plataforma que utilices o desde este enlace.


Utilizar el SDK de Latch para Go

Nosotros haremos las pruebas desde un ordenador con Linux. Utiliza el siguiente comando para instalar el SDK Latch para Go:

# go get github.com/tuxotron//latch-sdk-go
Finalmente estará instalado en la siguiente ruta:
$GOPATH/src/github.com/tuxotron/latch-sdk-go/
Es fundamental obtener los valores Application ID y Secret, desde la consola de administración web de Latch, en el menú Manage Applications. Sobre la aplicación que queramos proteger pulsamos la opción Edit, tal y como se muestra a continuación:

Figura 3: Menú de Latch donde podemos ver el ApplicationID y el Secret

En nuestro ejemplo, obtenemos los siguientes valores:
• Application ID: 7p9hrnmiWLf8EpbNcPFNfkaCrzPjW3kzTt2rrW9c
• Secret: YkmAJAX2W4v4JU9jP3Ce

Ahora procederemos a hacer algunas de las llamadas básicas de Latch utilizando el SDK de Latch para Go. Utilizaremos un fichero que hemos llamado main.go que puedes ver a continuación:

Figura 4: Fichero main.go en el SDK de Latch para Go

El código de este programa creará una instancia en Latch de nuestro servicio. Añadiremos en Latch desde la aplicación del Smartphone, un nuevo servicio para poder asociar nuestra aplicación. Luego lo pareamos con la opción Pair with Latch:

Figura 5: Opción de Latch donde podemos activa "Pair with Latch"

Esta opción nos devolverá un token temporal de pareado de 6 dígitos.

Figura 6: Token Temporal de Pareado devuelto por Latch

Ahora tendremos que añadir la llamada para realizar el pareo en nuestro código anterior. El código añadido son las líneas 3,12,13,14,15,16,17,18 y 19 en el fichero main.go.

Figura 7: Configuración de pareado con Latch

La línea 12 realiza una llamada a la función pair con el token recibido en la aplicación móvil. El resto del código se encarga de imprimir por pantalla el resultado de la llamada. Finalmente, cuando ejecutemos go run main.go devolverá el accountId, que será parecido al que mostramos a continuación:
OK {"accountId":"zZhqg7H9pabaZDDJg4y2HcFWCjZtDm6yXBg7QDdrKNjBJfreirxzjY74R2dtxbta"}
Este valor de accountId es necesario para comprobar el estado de nuestra aplicación desde Latch. Una vez realizado el pareo no necesitaremos más la opción PairWithToken(...) así que la comentamos en el código (línea 12) y añadimos una nueva línea para comprobar el estado de Latch status(...) que puedes ver en la línea 13:

Figura 8: Accediendo al estado de un accountID en Latch

La llamada status recibe tres parámetros, accountId, el cual recibimos cuando hicimos el pareado y los otros dos son valores booleanos (ver documentación Latch). Si ejecutamos nuestro código ahora y no tenemos nuestra aplicación bloqueada con Latch tendríamos que ver una salida parecida a la siguiente:
OK{"operations":{"WcqfYQErkANrk7wfijgv":{"status":"on"}}}
Recibimos el ID de la operación y el estado de Latch, que en este caso está activada, es decir, no bloqueada.

Figura 9: Activación de Latch sobre nuestro servicio

Cuando bloqueamos nuestra aplicación desde Latch, obtendremos una salida similar a la siguiente:
OK{"operations":{"WcqfYQErkANrk7wfijgv":{"status":"off"}}}
La aplicación está bloqueada por Latch y como hemos incluido el parámetro silent con el valor falso, recibiremos una alerta en nuestro smartphone como esta:

Figura 10: Aviso de alerta de acceso a Latch

A modo de resumen, estos son los pasos que tenemos que realizar para poder proteger un servicio Latch:
1. Obtener Applicaction ID y Secret 
2. PairWithToken con el token obtenido en la aplicación móvil. 
3. Llamar a la función status con el accountId, y comprobamos si el estado (status) está a ON (permitido) , si el estado está a OFF evitamos la ejecución de la operación y notificamos al usuario con el algún tipo de error.
Finalmente, para quitar el pareo de la aplicación podemos usar la función Unpair, y le pasamos como parámetro el accountId:

Figura 11: Opción de Unpair en linea 12

Recibiremos una alerta en el móvil indicando que todo ha ido bien:

Figura 12: Alerta recibida una vez hemos hecho el Unpair del servicio

Esperamos que les haya gustado esta primera introducción al SDK Latch en Go. Seguro que haremos más pruebas e implementaremos más funciones que compartiremos mas adelante.