¡Hola de nuevo, programadores PCSoft! 🚀

Si has llegado hasta aquí, seguro es porque ya te las arreglaste para crear y desplegar un webservice rest utilizando la suite de PCSoft. ¡Un aplauso para ti! 🎉 Pero ahora, vamos a dar un paso más allá y sumergirnos en el mundo de la autenticación de tus webservices.

Antes que nada, recuerda que hay varias opciones para implementar la autenticación en tus webservices rest. Sin embargo, hoy nos centraremos en dos en particular que pueden ser super útiles para tus proyectos.

1. Autenticación tradicional 📚

Esta es la opción más clásica y puede funcionar en ciertos casos. Pero, siendo honestos, a veces se vuelve un poco complicada de implementar y mantener al día. Aun así, es válido tenerla en cuenta.

2. Procedimiento «Prologo» 🎬

Esta opción es mucho más sencilla y fácil de llevar a cabo que la autenticación tradicional. Lo mejor de todo es que te brinda mayor flexibilidad a la hora de validar el acceso a tus webservices. ¡Parece la mejor opción!

En resumen, la autenticación es un aspecto clave en tus webservices rest. Si ya lograste crear y desplegar un webservice, no dejes de dar el siguiente paso y asegurarte de que solo los usuarios autorizados puedan acceder.

Introducción 🌐

Los Webservices Rest se han convertido en una herramienta esencial en la comunicación entre diferentes sistemas a través de Internet. En resumen, un Webservice Rest es un conjunto de servicios web que utilizan el protocolo HTTP para intercambiar información en formato XML o JSON. Su popularidad ha crecido enormemente en los últimos años, ya que ofrecen una forma sencilla y eficiente de compartir información entre distintos sistemas. En este post, nos enfocaremos en dos formas de autenticación para Webservices Rest en Webdev: el uso del procedimiento «Prologo» y el método clásico con un token. 🛠️

A lo largo de este artículo, aprenderás cómo implementar estas opciones en Webdev y cuáles son las mejores prácticas para garantizar la seguridad de tus Webservices Rest. Además, te mostraremos cómo utilizar estas opciones de autenticación de manera eficiente en tus proyectos de desarrollo de software, asegurando el acceso solo a aquellos usuarios autorizados. ¡Esperamos que este post te sea útil y te ayude a mejorar la seguridad de tus proyectos! 🎯

Autenticación en Webservices Rest 🔒

La autenticación es un aspecto crucial en los Webservices Rest, ya que permite controlar el acceso a los datos y funciones que ofrece el servicio. Sin una buena autenticación, los Webservices Rest pueden ser vulnerables a ataques y a la exposición de datos sensibles.

En Webdev, puedes implementar la autenticación en los Webservices Rest utilizando diferentes métodos, pero uno de los más recomendados es el uso del procedimiento Prologo.

Procedimiento Prologo 🚪

Este procedimiento se ejecuta cada vez que se llama a un punto de entrada, justo antes del procedimiento asociado con ese punto de entrada. Te permite ejecutar código que debe llevarse a cabo para todos los puntos de entrada, como verificar que el cliente esté autenticado y que tenga derecho a llamar a los puntos de entrada.

Todas las funciones del Webservice están disponibles durante la llamada a este procedimiento. Es posible rechazar la llamada al punto de entrada llamando a WebserviceWriteHTTPCode para proporcionar el código de retorno y el posible contenido de la respuesta, seguido de RETURN False para especificar que la llamada debe ser rechazada.

En Webdev, puedes implementar el procedimiento «Prologo» utilizando la opción «Utilizar Prologo para la autenticación» en la configuración de tu Webservice Rest. A partir de ahí, Webdev se encarga de manejar la autenticación de forma transparente, sin necesidad de utilizar una autenticación tradicional.

¡No olvides la seguridad! 🚨

Recuerda que el procedimiento «Prologo» es una opción muy útil para la autenticación en tus Webservices Rest en Webdev, y puede ayudarte a simplificar el proceso de autenticación de tus usuarios. Sin embargo, es importante asegurarte de que el token de acceso sea generado y manejado de forma segura, para garantizar la seguridad de tus webservices.

Ejemplo de autenticación clásica 🧪

Para la autenticación clásica, sin el uso de un procedimiento Prologo, vamos a hacer uso de un método “Authentication” en nuestra clase. Si no utilizas POO, puedes optar por un procedimiento estándar en su lugar. A continuación, se detalla el proceso:

  • Declaración del procedimiento: Se declara un procedimiento llamado «Authentication» que devuelve un valor booleano.
PROCEDURE PRIVATE GLOBAL Authentication() : boolean
  • Variables: Se declaran las variables «Authenticate» (booleana) y «s_Token» (cadena de texto).
    • «Authenticate»: Indica si el usuario está autenticado o no.
    • «s_Token»: Se utiliza para leer el valor del encabezado HTTP «token» enviado por el cliente.
Authenticate	is boolean
s_Token			is string	= WebserviceReadHTTPHeader("token")
  • Comparación y autenticación: Se compara el valor de la variable «s_Token» con una cadena de texto que representa un valor de token de acceso válido. Si el valor del token coincide, se establece «Authenticate» en «True». De lo contrario, se establece «Authenticate» en «False».
IF s_Token = "<tu_token_valido>" THEN
	Authenticate			= True
ELSE
	Authenticate			= False
END
  • Resultado: Finalmente, se verifica si «Authenticate» es verdadero, en cuyo caso se devuelve «True», y si «Authenticate» es falso, se devuelve «False».

En resumen, este procedimiento de autenticación verifica el valor del token de acceso enviado por el cliente y devuelve «True» si el valor es válido y «False» en caso contrario. Ten en cuenta que, en un caso real, deberías implementar un sistema de generación y validación de tokens más seguro, en lugar de comparar con un valor estático.

PROCEDURE PRIVATE GLOBAL Authentication() : boolean

Authenticate	is boolean
s_Token			is string	= WebserviceReadHTTPHeader("token")

//Aquí analizamos el valor del header con nombre "token" y lo validamos
IF s_Token = "<tu_token_valido>" THEN
	Authenticate			= True
ELSE
	Authenticate			= False
END

Authenticate = True

IF Authenticate THEN
	RESULT True
ELSE
	RESULT False
END

Ejemplo usando el procedimiento Prologo 🔄

Para utilizar un procedimiento Prologo, debemos seguir algunos pasos:

  1. Crear el método de autenticación
  2. Configurar el webservice para la utilización del procedimiento prologo

Crear el método de autenticación 🛠️

En nuestro caso, vamos a utilizar una clase para manejar la autenticación, pero tú puedes usar un procedimiento estándar. La idea de la clase es aprovechar los beneficios de la programación orientada a objetos.

PROCEDURE PUBLIC GLOBAL restAuthentication()
    s_Token is string = WebserviceReadHTTPHeader("token")

    isAuthenticated is boolean
    json_Res is JSON

    // Si existe un registro activo de usuario con este email
    IF s_Token = "<tu_token_valido>" THEN
        json_Res.code = 200
        json_Res.errorMessage = "OK"
        isAuthenticated = True
        WebserviceWriteHTTPCode(json_Res.code, json_Res.errorMessage)
    ELSE
        json_Res.code = 401
        json_Res.errorMessage = "Token error"
        isAuthenticated = False
        WebserviceWriteHTTPCode(json_Res.code, json_Res.errorMessage)
    END

    RESULT isAuthenticated

El procedimiento «restAuthentication» se declara como público y global, lo que significa que es accesible desde cualquier parte del proyecto.

La variable «s_Token» se declara para leer el valor del encabezado HTTP «token» enviado por el cliente. Las variables «isAuthenticated» y «json_Res» se declaran para almacenar el resultado de la autenticación y los mensajes de respuesta que se enviarán al cliente.

A continuación, se compara el valor de la variable «s_Token» con una cadena de texto que representa un valor de token de acceso válido. Si el valor del token coincide, se establece «isAuthenticated» en «True». De lo contrario, se establece «isAuthenticated» en «False».

Luego, se utiliza la variable «json_Res» para definir el código de respuesta y el mensaje de error que se enviarán al cliente, utilizando la función «WebserviceWriteHTTPCode».

Si el valor de «isAuthenticated» es verdadero, se devuelve «True» para indicar que el usuario está autenticado. De lo contrario, se devuelve «False» para indicar que el usuario no está autenticado.

En resumen, este procedimiento de autenticación verifica el valor del token de acceso enviado por el cliente y devuelve «True» si el valor es válido y «False» en caso contrario. Además, envía un código de respuesta y un mensaje de error al cliente según corresponda.

Configurar el webservice usando el procedimiento Prologo ⚙️

Para configurar el webservice a modo de que utilice el procedimiento prologo debemos dirigirnos a la descripción de nuestro Webservice:

Hacer click en la sección de Procedimiento prólogo:

Y seleccionar el método que acabamos de crear:

De esta manera tenemos todo listo para hacer el deploy de nuestro webservice.

Testing usando Postman

Postman es una herramienta muy útil y rápida que nos permitirá testear de manera sencilla nuestros webservices una vez los tengamos desplegados en nuestros servidores.

Paso a paso para probar webservices con Postman

Aquí les dejo una guía simple para probar sus webservices usando Postman:

  1. Crear un nuevo request para el método que tenemos publicado.
  2. Completar los datos de URL, parámetros, etc., propios de nuestro método. Por ejemplo, en este caso, es un método para leer mensajes de una base HFSQL.
  3. Añadir una clave en los Headers de Postman con el nombre “token” (sí, como el que usamos en nuestros métodos de autenticación) y asignarle un valor.
  4. Verificar que todos los datos estén correctos y hacer el envío desde Postman utilizando el botón SEND.

Si proporcionamos un token erróneo vamos a recibir este mensaje en Postman:

Y si todo va correctamente el resultado seria similar a este:

Conclusión

Como pueden ver, validar usuarios utilizando cualquiera de estas opciones es realmente sencillo. La implementación del procedimiento Prólogo ofrece una mayor seguridad, ya que si no se valida la llamada, el método al que intentamos acceder no llega a ejecutarse. Esto nos ayuda a evitar riesgos de accesos no deseados en caso de algún error o problema de seguridad. Además, este nivel de abstracción nos permite programar nuestra autenticación una sola vez y compartirla con todos los métodos que tengamos publicados en nuestro webservice REST.

Es importante mencionar que los códigos utilizados en este artículo son ejemplos básicos y sencillos, diseñados para ilustrar el concepto de una manera fácil de entender. En un entorno real, es posible que necesiten aplicar soluciones más avanzadas y sofisticadas para garantizar una seguridad adecuada en sus aplicaciones.

Esperamos que esta información les haya resultado útil y les ayude a implementar sus propias soluciones de autenticación y seguridad en sus proyectos de WLanguage. ¡No duden en compartir sus experiencias o dudas en los comentarios! 👇 ¡Hasta la próxima y feliz programación! 🎉

Enlaces de interés

  • Enlace a la documentación oficial provista por PCSoft para el uso de Prólogos

https://doc.windev.com/en-US/?1000022797