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 GoNosotros 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�