PCSoft
Webservices Rest - Autenticación
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 d...
Este contenido fue publicado originalmente en HolaWindev y ahora está disponible en Barbat.dev.
**¡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 = "" 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 = "" 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:
-
Crear el método de autenticación
-
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 = "" 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: