lunes, agosto 21, 2017

Friends, tenemos un nuevo SDK de Latch para Go!

Tanto mi gran amigo Rafael Troncoso (@tuxotron) como yo, somos dos usuarios de Latch y llevábamos mucho tiempo queriendo implementarlo a nivel de desarrollador en algún proyecto propio. Aunque hemos hecho algunas pruebas para integrarlo en Raspberry Pi y otros proyectos relacionados con el IoT, finalmente nos hemos decidido por un SDK 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.

Figura 1: Friends, tenemos un nuevo SDK de Latch para Go!

Rafael ha creado una primera versión de este SDK y hemos estado realizando varias pruebas sobre él para comprobar que las funciones básicas funcionan correctamente. Pero antes de entrar en materia queremos explicar por qué nos hemos decidido por el lenguaje Go. Primero porque si el legendario Ken Thompson, uno de los padres del Lenguaje C, es uno de los desarrolladores y por lo tanto hay que prestarle mucha atención. De hecho, otra de sus ventajas 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 os haya gustado esta primera introducción al SDK Latch en Go. Seguro que haremos más pruebas e implementaremos más funciones que compartiremos con todos vosotros.

Autores: Fran Ramírez (@cyberhadesblogç), Investigador de ElevenPaths y escritor del libro “Microhistorias: anécdotas y curiosidades de la Informática” y  Rafael Troncoso (@tuxotron),  co-fundador del blog CyberHades y escritor del libro “Microhistorias: anécdotas y curiosidades de la Informática

No hay comentarios:

Publicar un comentario