Profile image
¡Protege tus APIs REST de Oracle APEX como el Bebé Jefazo protege Bebé Corp!

¡Protege tus APIs REST de Oracle APEX como el Bebé Jefazo protege Bebé Corp!

Tue Mar 25 2025
Desarrollo

¡Hola Chiquis!👋🏻 En el mundo empresarial, donde la información es tan valiosa como las fórmulas secretas de la “Bebé Corp.”, la seguridad de tus APIs REST es primordial. Oracle APEX Cloud te brinda la posibilidad de crear servicios REST potentes, pero, ¿cómo aseguramos que solo los “ejecutivos” autorizados tengan acceso? ¡La respuesta está en la autenticación JWT!

En la película Jefe en Pañales, el protagonista, aunque pequeño, demuestra ser un estratega brillante, siempre un paso adelante para proteger su misión. De manera similar, proteger los servicios REST en Oracle APEX Cloud requiere una estrategia sólida, y la autenticación basada en JSON Web Tokens (JWT) es una herramienta clave para garantizar la seguridad. En este post, exploraremos cómo implementar esta protección con ejemplos prácticos.

¿Qué es JWT y por qué es tan importante para tus APIs? JWT (JSON Web Token) es como un “pase VIP” digital que certifica la identidad de quien realiza una solicitud. Imagínalo como el maletín del Bebé Jefazo, lleno de información confidencial que solo él y sus “empleados” pueden descifrar. En el contexto de Oracle APEX Cloud, JWT nos permite verificar la autenticidad de las solicitudes y proteger nuestros servicios REST de accesos no autorizados.

Es un token compacto y seguro que contiene información codificada (como el usuario y sus permisos) y se utiliza para autenticar solicitudes a servicios REST. Este token tiene tres partes:

  • Header: Define el algoritmo de firma y el tipo de token.
  • Payload: Contiene las reclamaciones (claims), como el usuario y roles.
  • Signature: Garantiza que el token no ha sido alterado.

Prerrequisitos y Configuración Inicial en Oracle APEX Antes de comenzar, asegúrate de tener:

  • Una aplicación en Oracle APEX con servicios REST habilitados.
  • Conocimientos básicos de SQL y PL/SQL.
  • Una herramienta para probar APIs (como Postman o Curl).

Habilitar Servicios REST

  • Accede a tu instancia de Oracle APEX.
  • Ve a SQL Workshop > RESTful Services.
  • Crea un nuevo módulo REST y define los endpoints necesarios.

Crear una Tabla de Usuarios Imagina que los usuarios son los “agentes secretos” del jefe. Necesitamos una tabla para almacenarlos:

CREATE TABLE usuarios (
    id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    nombre_usuario VARCHAR2(50) UNIQUE NOT NULL,
    contrasena VARCHAR2(255) NOT NULL,
    rol VARCHAR2(20)
);

Insertar Usuarios de Prueba

INSERT INTO usuarios (nombre_usuario, contrasena, rol)
VALUES ('jefe', '1234', 'admin');

Generar Tokens JWT El “jefe” necesita emitir credenciales para sus agentes. Usaremos PL/SQL para generar tokens JWT. Al igual que el Bebé Jefazo obtiene su maletín al iniciar sesión, tus usuarios obtendrán un token JWT después de autenticarse. Este token contiene información sobre el usuario y sus permisos.

  • Envío del token en las solicitudes: Cada vez que un usuario quiera acceder a un servicio REST protegido, deberá enviar el token JWT en la cabecera de la solicitud, como si estuviera mostrando su “pase de empleado” en la entrada de “Bebé Corp.”.

Paquete PL/SQL para JWT Oracle APEX incluye el paquete APEX_JWT para trabajar con JWT. Aquí un ejemplo:

DECLARE
    l_token VARCHAR2(4000);
BEGIN
    l_token := APEX_JWT.ENCODE(
        p_header => APEX_JSON.T_INITIALIZE('{"alg":"HS256","typ":"JWT"}'),
        p_payload => APEX_JSON.T_INITIALIZE('{"sub":"jefe","rol":"admin"}'),
        p_key => 'clave_secreta'
    );
    DBMS_OUTPUT.PUT_LINE('Token JWT: ' || l_token);
END;
/

Validar Tokens en los Endpoints El “jefe” verifica las credenciales de sus agentes antes de permitirles el acceso. Oracle APEX Cloud verificará la autenticidad del token, asegurándose de que no haya sido alterado y que el usuario tenga los permisos necesarios para acceder al servicio. ¡Es como si el Bebé Jefazo revisara cada “pase” en la entrada!

bebe
  • Middleware para Validación: Agrega un procedimiento PL/SQL para validar el token en cada solicitud:
CREATE OR REPLACE PROCEDURE validar_token (p_token IN VARCHAR2) IS
    l_payload CLOB;
BEGIN
    l_payload := APEX_JWT.DECODE(
        p_token => p_token,
        p_key => 'clave_secreta'
    );

    -- Extraer información del payload
    DBMS_OUTPUT.PUT_LINE('Payload: ' || l_payload);
EXCEPTION
    WHEN OTHERS THEN
        RAISE_APPLICATION_ERROR(-20001, 'Token inválido');
END;
/

Probar la Seguridad Usa herramientas como Postman para enviar solicitudes con el token JWT en el encabezado:

curl -X GET https://<tu-apex-url>/ords/api/endpoint \
-H "Authorization: Bearer <tu-token-jwt>"

Beneficios de utilizar JWT en Oracle APEX Cloud

  • Seguridad reforzada: Protege tus APIs de accesos no autorizados, como el Bebé Jefazo protege sus planes de “Bebé Corp.”.
  • Escalabilidad: Maneja grandes volúmenes de solicitudes sin comprometer la seguridad. Funciona bien en sistemas distribuidos.
  • Flexibilidad: Integra tus APIs con diferentes aplicaciones y plataformas. Permite personalizar las reclamaciones según las necesidades.
  • Compacto y Seguro: Ideal para aplicaciones modernas.

Conclusión La autenticación JWT es una herramienta poderosa para proteger tus servicios REST de Oracle APEX Cloud. Al igual que el Bebé Jefazo protege sus secretos, tú puedes proteger tus APIs de accesos no autorizados. Este enfoque no solo mejora la seguridad, sino que también garantiza que solo los usuarios autorizados puedan acceder a tus recursos. ¡Es hora de tomar el control y proteger tu aplicación como un verdadero estratega!

¡Gracias por leer! 👇🏻 🚀 ¿Te ha gustado? Comparte tu opinión. Artículo completo, visita: https://community.aws/@orlidun https://lnkd.in/ewtCN2Mn https://differ.blog/@orlidun https://lnkd.in/eAjM_Smy 👩💻 https://lnkd.in/eKvu-BHe https://dev.to/orlidev https://lnkd.in/ecHHabTD https://pin.it/2BuZ9N4n8 https://linktr.ee/orlidevs ¡No te lo pierdas!

Referencias: Imágenes creadas con: Copilot ( microsoft.com )

#PorUnMillóndeAmigos #MakeYourselfVisible

img239