隆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 鈥淎uthentication鈥 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 鈥渢oken鈥 (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