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.
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”