Thursday, September 21, 2017

Friends tenemos un nuevo SDK de Latch para Go!

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�


download file now