Arquitectura · Entrega estática protegida

WordPress estático seguro con cookies firmadas de CloudFront

Utilice Cognito para demostrar la identidad, un firmante para emitir acceso temporal de CloudFront y CloudFront para proteger rutas estáticas sin restablecer sesiones PHP de WordPress.

Visitante → ruta protegida de CloudFront
   ↓ sin cookie válida
Gatey → Amazon Cognito
   ↓ identidad aceptada
Servicio firmante → cookies firmadas
   ↓
CloudFront → objeto S3 privado

Límites de confianza

La identidad, el acceso a archivos estáticos y la autorización de API son controles diferentes

Un token de Cognito demuestra una identidad. Una cookie firmada de CloudFront controla la recuperación de objetos estáticos seleccionados. Las API protegidas siguen necesitando su propia autorización JWT, IAM o del lado del servicio. Mantener separados estos artefactos evita convertir una credencial en un permiso universal.

Identidad: navegador → Cognito → tokens
Acceso estático: identidad aceptada → firmante → cookie de CloudFront → ruta protegida
Acción de API: navegador → API autorizada → validación del backend

WordPress sigue siendo el CMS y no aplica el acceso de visitantes al recibir cada solicitud.

Límite de entrega Los objetos S3 privados deben permanecer detrás de CloudFront. Ocultar enlaces, bloquear con JavaScript o completar el inicio de sesión no protege por sí solo un objeto estático.

Qué aprovisiona el stack estático seguro

La capa de protección abarca almacenamiento, entrega en el edge, firma, identidad y controles de abuso. La tabla muestra qué posee cada componente y qué límite de seguridad aplica.

Recurso / capacidadFinalidadLímite de seguridadNota de diseño
Origen S3Almacena archivos estáticos exportados de WordPressLos objetos no deben ser públicos cuando CloudFront es el límite de entregaStatic Publisher puede publicar archivos; el stack de protección controla la ruta de acceso.
Distribución de CloudFrontSirve rutas públicas y protegidas en el edgeLos comportamientos protegidos exigen cookies firmadasLa lista de rutas protegidas es un parámetro de arquitectura, no un ajuste del tema.
Grupo de claves / clave pública de CloudFrontPermite a CloudFront validar firmas de políticas de cookiesSolo CloudFront ve la clave pública; la privada permanece en el lado firmanteLa rotación de claves necesita un procedimiento.
Servicio firmanteEmite cookies firmadas tras comprobar la identidadClave privada en KMS/SSM o almacenamiento protegido equivalentePuede usar API Gateway + Lambda o lógica del edge en el mismo dominio según el ámbito de la cookie.
Integración Cognito/GateyAutentica al visitante antes de emitir cookiesLos tokens de identidad permanecen separados de las cookies de CloudFrontLa página de inicio de sesión puede formar parte del sitio estático.
Opciones de ruta, DNS y certificadoAsignan el sitio público y un dominio opcional de API/firmanteTLS y los nombres de host definen el comportamiento de las cookiesLa estrategia de dominios importa tanto como el código Lambda.
WAF / controles de tasaReducen abusos en rutas públicas y de firmaFiltrado en el edge antes de ejecutar el runtimeEspecialmente útil cuando las rutas protegidas y los endpoints de firma son públicos.

Cookies firmadas frente a JWT

Estas credenciales demuestran cosas distintas. La comparación evita tratar tokens de identidad, credenciales temporales de AWS, cookies de acceso de CloudFront y sesiones de WordPress como artefactos intercambiables.

ArtefactoEmitido porValidado porUso idóneo
Token de ID/acceso de CognitoAmazon Cognito tras la autenticaciónCódigo frontend, autorizador de API Gateway, Lambda del backendDemostrar quién es el usuario y qué ámbitos o claims de identidad posee.
Credenciales IAMCognito Identity Pool / STSAutorización de servicios AWSLlamar desde el navegador a API o servicios autorizados por IAM con credenciales temporales limitadas.
Cookie firmada de CloudFrontFirmante de confianza propietario de la clave privadaCloudFront en el edgePermitir o denegar la recuperación de objetos estáticos bajo patrones de ruta seleccionados.
Cookie de inicio de sesión de WordPressRuntime de WordPress/PHPWordPressSesiones administrativas o dinámicas tradicionales de WordPress, no autorización estática en el edge.

Modelo de protección de rutas

Las clases de ruta deben ser explícitas antes del despliegue. La tabla distingue páginas públicas, objetos estáticos protegidos, páginas de cuenta, API y endpoints de mayor riesgo para aplicar el control correcto.

Clase de rutaEjemploAplicaciónError habitual
Contenido público/, /about/, /blog/, recursosCaché de CloudFront y control de acceso al origen S3Colocar por error JSON privado, cargas o archivos generados bajo prefijos públicos.
Contenido estático protegido/members/*, /training/*, /client/*Cookies firmadas de CloudFront en los comportamientos o patrones coincidentesOcultar solo los enlaces y dejar los objetos estáticos accesibles directamente.
Páginas de inicio de sesión y cuenta/signin/, /profile/Flujo de navegador de Gatey + CognitoTratar la propia página de acceso como estado de WordPress del lado del servidor.
API protegidas/api/* o dominio configurado de API GatewayAutorizador de Cognito, ámbitos JWT o IAMSuponer que una cookie de CloudFront autoriza mutaciones de API.
Endpoints de IA o workflow/frontend/prompt, /forms/submitAutenticación específica, WAF, reCAPTCHA y límites de tasaReutilizar la lógica de acceso a páginas para acciones de ejecución de mayor riesgo.

Modos de fallo importantes

El modelo es más fácil de operar cuando los estados de fallo habituales son explícitos. La tabla relaciona síntomas visibles con causas probables y el límite que debe inspeccionarse primero.

Modo de falloSíntomaCausa probableDirección de corrección
La ruta protegida vuelve al inicio de sesiónEl usuario inicia sesión pero regresa a la pantalla de accesoDominio o ruta de cookie incorrectos, faltan cookies de CloudFront o el navegador rechaza atributosRevisar cabeceras Set-Cookie, ajustes de host/dominio y atributos SameSite/Secure.
El archivo protegido es públicoLa URL privada se abre en incógnito sin iniciar sesiónObjeto S3 público, comportamiento de CloudFront sin protección u origen directo expuestoBloquear acceso público de S3, imponer acceso de origen de CloudFront y verificar patrones.
403 tras un inicio de sesión válidoCloudFront devuelve AccessDeniedCookie caducada, ID de par de claves incorrecto, firma no válida o patrón de política distintoComprobar duración, grupo de claves, clave privada y patrón de recurso de CloudFront.
Funciona en un subdominio y falla en otroLas cookies no se envían o se envían las equivocadasDiferencia entre cookie de dominio y de host o colisión entre sitiosTender a la emisión en el mismo dominio o aislar entornos con hosts y claves distintos.
La API funciona sin acceso a página o al contrarioEl usuario llama a la API pero no ve la página, o viceversaCapas de autenticación separadas configuradas de forma distintaTratar y documentar el acceso estático y la autorización de API como políticas separadas.

Ruta de implementación

Diseñe las rutas protegidas antes de publicarlas

El modelo de contenido protegido debe quedar explícito antes de que el artefacto estático llegue a producción.

  1. Definir clases de rutas públicas y protegidas — Identifique qué URL y recursos seguirán siendo públicos y qué patrones de ruta exigirán acceso autenticado mediante cookies firmadas.
  2. Configurar identidad respaldada por Cognito — Use Gatey y el Cognito User Pool configurado para el inicio de sesión, MFA, perfiles o SSO en el navegador, sin convertir WordPress en autoridad de sesión del frontend.
  3. Desplegar el firmante y la política de CloudFront — Mantenga el material de firma en el lado de confianza, limite las políticas de cookies a las rutas necesarias y use tiempos de vida adecuados para el contenido protegido.
  4. Probar el acceso como un problema de entrega — Compruebe por separado la denegación anónima, el acceso tras iniciar sesión, la caducidad, el acceso directo a S3, el dominio de cookies y la autorización de API.

Cuándo encaja la protección con cookies firmadas

Buena opción

Contenido estático compartido con acceso autenticado

  • Un sitio WordPress estático tiene rutas de miembros, clientes, documentación, formación o portal que pueden representarse como objetos estáticos compartidos.
  • Desea entregar páginas públicas y protegidas mediante CloudFront sin volver a introducir sesiones PHP.
  • Cognito ya controla la identidad de visitantes o será el límite de identidad de la aplicación.

Elegir otro patrón

Use otro modelo de autorización cuando

  • La propia página deba renderizarse de forma distinta para cada usuario en el servidor.
  • El acceso deba revocarse inmediatamente en cada solicitud y no pueda depender de una duración adecuadamente corta de la cookie firmada.
  • El sitio siga siendo totalmente dinámico y la protección normal de roles y sesiones de WordPress ya satisfaga el requisito.

Guías de problemas

Problemas del comprador que admite esta arquitectura

¿Cómo añado inicio de sesión a WordPress estático sin sesiones PHP?

Use Añada inicio de sesión a WordPress estático sin recuperar las sesiones PHP como punto de entrada centrado en el problema. Explica la separación de identidad; esta arquitectura explica el control de entrega independiente de CloudFront.

¿Debe Cognito sustituir a WordPress como capa de identidad de la aplicación?

Consulte Use Amazon Cognito en lugar de WordPress como capa de identidad de la aplicación cuando el inicio de sesión deba extenderse a API, frontends estáticos u otras superficies.

¿Pueden seguir utilizándose proveedores de identidad SAML u OIDC existentes?

Consulte Conecte WordPress a proveedores de identidad SAML y OIDC existentes sin crear flujos de inicio de sesión separados para la federación. Cognito puede seguir siendo el centro de identidad y la capa estática protegida consumir el estado autenticado resultante.

¿El inicio de sesión estático autoriza automáticamente las API?

No. El acceso estático firmado y las acciones de API protegidas son límites distintos. El backend debe validar de forma independiente JWT, IAM u otro mecanismo de autorización compatible.

Empiece por el problema de acceso

Añada inicio de sesión sin recuperar la capa de sesiones de WordPress

Use la solución de WordPress estático seguro para el problema del comprador y esta arquitectura cuando determinados archivos o rutas también necesiten protección aplicada por CloudFront.