OAuth, JWT y pasarelas: separar controles de seguridad

En resumen

OAuth 2.0 organiza autorización delegada; OpenID Connect añade autenticación. JWT es un formato de token y una pasarela es un punto de control: sus funciones son distintas.

Sala ficticia vacía de verificación de identidad con dos llaves de seguridad, tarjeta en blanco y carpeta burdeos Ilustración · escena ficticia
En este artículo

Elegir la función antes que la herramienta

Un token de acceso OAuth puede ser opaco o usar JWT. Decodificar JWT no comprueba autenticidad; un JWT firmado no cifra automáticamente su contenido. Una pasarela no sustituye la autorización de negocio dentro de los servicios.

ElementoFunciónLímite visible
OAuth 2.0Autorización delegada.No es por sí solo un protocolo de inicio de sesión.
OpenID ConnectAutenticación sobre OAuth 2.0.Requiere validar perfil y tokens.
JWTFormato de declaraciones.Decodificación, firma y cifrado son distintos.
Pasarela APIControles comunes de entrada.No sustituye permisos sobre cada objeto.

Validar el protocolo y cada acceso

  • Elija un flujo adecuado al cliente. Para recorridos de usuario, siga las recomendaciones actuales sobre código de autorización y PKCE, con biblioteca mantenida y redirecciones estrictamente controladas.
  • Para un JWT aceptado, compruebe firma, algoritmos permitidos, emisor, destinatario y restricciones temporales del perfil. Rechace tokens destinados a otro uso.
  • Controle cada objeto, acción y organización. Pruebe accesos entre cuentas con datos ficticios; un rol o ámbito general no siempre basta.

Prever caducidad, revocación e incidentes

Documente renovación, rotación de claves, pérdida de secretos y estrategia de revocación. La verificación local no conoce automáticamente una revocación remota. Minimice datos y registros; ni JWT ni cuotas garantizan por sí solos seguridad o cumplimiento.

Fuentes primarias

Una puerta de enlace no sustituye la autorización de objetos.

Una API debe verificar que un token esté destinado a ella y que quien la llama pueda realizar la operación sobre el objeto. Una firma JWT válida o un inicio de sesión OAuth exitoso no establecen esos permisos. Pruebe las identidades vecinas y las funciones privilegiadas.

  • Rechace un token válido destinado a otra audiencia.
  • Pruebe el acceso entre cuentas, los campos privados y las operaciones administrativas.
  • Ejecute la caducidad y el cambio de rol sin escribir tokens en los registros.

Fuente primaria: IETF — RFC 9700, OAuth 2.0 Security Best Current Practice. Método relacionado: consultar la guía práctica.

Passkeys: preparar un cambio de dominio y RP ID

Distinguir cuenta, origen web y RP ID para evitar la reasignación silenciosa de credenciales.

  • Registra orígenes antiguos y nuevos, sus RP ID y las cuentas asociadas. El mismo nombre de cuenta no hace válida una passkey para otro RP ID. Comprueba las combinaciones permitidas por WebAuthn y los accesos disponibles durante la transición.
  • En un entorno autorizado, verifica challenge, origen, RP ID y vínculo con la cuenta mediante una biblioteca adecuada. Prueba un origen inesperado y un challenge repetido. Si cambia el RP ID, prepara un nuevo registro autenticado; copiar una fila no migra la clave.
  • Prueba un usuario con solo la credencial antigua, la recuperación y las sesiones abiertas. Fija el orden de apertura y retirada de accesos con una vuelta verificada. Registrarse en el nuevo dominio no prueba que todas las sesiones antiguas estén revocadas.

Caso de aceptación reproducible

Ejemplo ficticio: estos datos no describen clientes ni resultados observados.

Ver datos del caso
{
    "old_origin": "https://login.old.example",
    "old_rp_id": "old.example",
    "new_origin": "https://login.new.example",
    "new_rp_id": "new.example",
    "same_service_account": true,
    "expected": "authenticated_new_registration"
}

Decisión esperada

Ejemplo ficticio: la cuenta no cambia, pero old.example pasa a new.example con otro RP ID. No se puede reasignar silenciosamente la credencial antigua; el nuevo registro debe seguir el recorrido autenticado previsto.

W3C — Web Authentication Level 2

¿Puede una edición en base de datos cambiar el RP ID de una passkey?

No. El RP ID forma parte del ámbito verificado de la credencial. Prepara un registro válido para el nuevo ámbito y una correspondencia de cuenta autenticada.

Fuente primaria: W3C — Web Authentication Level 2. Método relacionado: consultar la guía práctica.

Renovación TLS: verificar el certificado realmente servido

Seguir la renovación hasta los puntos de terminación y los clientes antes de cerrar el cambio.

  • Lista nombres, CDN, balanceadores, proxies y conexiones internas con certificados. Registra certificado servido, cadena, vencimiento y responsable. La emisión no prueba instalación en todos los nodos. Protege las claves privadas y no las incluyas en el registro.
  • Prueba automatización en el entorno de pruebas del proveedor si existe. Verifica desafíos, nombres SAN, almacenamiento protegido y recarga. Evita emitir en cada arranque si existe un certificado utilizable según la política de claves.
  • Comprueba nombres, fechas y confianza con clientes compatibles por rutas pertinentes. Mantén la validación TLS activa. Vigila el vencimiento servido, no solo el planificador. Volver atrás exige certificado válido y clave no comprometida; de lo contrario corrige o aísla el punto fallido.

Caso de aceptación reproducible

Ejemplo ficticio: estos datos no describen clientes ni resultados observados.

Ver datos del caso
{
    "issuance_succeeded": true,
    "proxy_count": 2,
    "proxies_serving_expected_certificate": 1,
    "other_proxy_certificate_expired": true,
    "tls_verification_enabled": true,
    "expected": "change_incomplete_fix_and_verify_client_paths"
}

Decisión esperada

Ejemplo ficticio: la renovación funciona, pero uno de dos proxies sirve un certificado caducado. El cambio sigue incompleto; corrige ese proxy y comprueba rutas sin desactivar TLS.

Let’s Encrypt — Integration Guide

Fuente primaria: Let’s Encrypt — Integration Guide. Método relacionado: consultar la guía práctica.

Explorar el catálogo KEV de CISA

Las notas detalladas de esta edición están disponibles en inglés.

One identifier can span several technical layers

An entry may concern a library, server or component embedded in an appliance. Search the exact name, known dependencies and the distributed product’s advisory. Catalogue aliases are not a complete list of affected versions.

  • Connect the CVE, component supplier and final-product supplier.
  • Check version, configuration and execution path in the authorised environment.
  • Do not infer remediation from an empty search result.

Explorar el catálogo y el método →

CISA KEV · 2026.10.21 · Documentary review : 2026-10-22

Extensiones: permisos y acceso

Las notas detalladas de esta edición están disponibles en inglés.

Robust authentication does not describe extension access

Phishing resistance does not remove the need to examine what runs in the browser after a session opens. A manifest provides clues about cookies, scripting, debugging and identity without establishing collection.

  • Test approved extensions in a profile dedicated to sensitive operations.
  • For identity, inspect OAuth scopes and recipients; this permission does not enumerate identity-provider rights.
  • Distinguish session revocation, token revocation, extension disablement and native-component removal.

Read the permission directory and manifest examples →

Google Chrome · Stay secure · Documentation consulted 2026-10-23; browser behaviour remains version-dependent