File Gate
File Gate está dirigido a propietarios de sitios Drupal, equipos de contenido e ingenieros de front end que necesitan distribuir un archivo privado solo después de que un visitante haya cumplido una condición de acceso real. Wilkes & Liberty mantiene el módulo, con licencia GPL, para Drupal 11.4 y Drupal 12. Funciona con Drupal acoplado, aplicaciones desacopladas y sitios híbridos, porque la decisión de acceso y la entrega de bytes permanecen en Drupal mientras la experiencia del visitante puede vivir en cualquier parte.
Por qué existe File Gate
El sistema de archivos privado de Drupal protege las rutas de almacenamiento; no implementa automáticamente una condición de acceso de negocio. Si los visitantes anónimos pueden ver una entidad publicada que referencia un archivo privado, el núcleo puede permitir la descarga referenciada. Eso es correcto para el modelo de acceso a entidades de Drupal, pero no basta para un informe que requiere un formulario de captación, un archivo limitado a usuarios autenticados, un entregable comprado o un documento que requiere garantía respaldada por hardware.
Los sitios desacoplados hacen que la brecha sea más fácil de pasar por alto. Un formulario, una tienda o un flujo de identidad pueden ejecutarse en Next.js mientras Drupal almacena el archivo. File Gate aporta el límite de confianza que falta: el front end demuestra que su condición de acceso se cumplió, Drupal emite una concesión de corta duración para un archivo, y File Gate —no el front end— verifica la concesión y transmite los bytes.
Quién debería usarlo, y cuándo
- Equipos de contenido y generación de demanda que distribuyen informes tras un formulario de captación de clientes potenciales sin exponer una URL de archivo permanente.
- Portales de membresía y de clientes donde el inicio de sesión, el rol, la compra o el derecho de acceso deben regir una descarga.
- Entornos regulados o de alta garantía que necesitan reclamaciones OIDC, PIV/CAC, FIDO2/WebAuthn, DPoP o una señal mTLS del borde antes de la entrega.
- Equipos de Drupal desacoplado que quieren que el front end controle la experiencia mientras Drupal sigue siendo la autoridad de política y entrega.
- Desarrolladores de módulos que necesitan un complemento de acceso reutilizable en lugar de otro controlador de descarga a medida.
Use File Gate cuando la condición para recibir un archivo sea más estricta que “el visitante puede ver esta página”. No lo use como gestión de derechos digitales: una vez que un destinatario autorizado tiene los bytes, el módulo no puede impedir la copia ni la redistribución.
Dónde se ubica en la arquitectura
- Un editor sube un archivo a un campo configurado como restringido. File Gate obliga a ese campo a usar el sistema de archivos privado de Drupal.
- La ruta ordinaria de archivos privados se deniega para la referencia protegida. Una ruta directa adivinada o filtrada no es la ruta de entrega.
- El visitante completa la condición de acceso elegida por el sitio, en Drupal o en otro front end.
- Un back end de confianza —o una sesión de Drupal aprobada— solicita una concesión para el UUID del archivo o del medio. Los secretos usados para emitir concesiones permanecen del lado del servidor.
- File Gate devuelve una URL relativa y firmada que contiene el UUID del archivo, la expiración, el método de acceso y cualquier restricción de uso. Nunca expone el URI
private://. - El navegador canjea esa URL. File Gate valida la firma y la evidencia específica del método de acceso, consume cualquier asignación de un solo uso y transmite una respuesta privada con
no-store.
El módulo separa demostrar la elegibilidad de entregar los bytes. Un sitio puede reemplazar su proveedor de formularios, su proveedor de identidad, su tienda o su framework de front end sin reescribir el núcleo de firma y transmisión.
Ocho métodos de acceso incluidos
El módulo base ofrece cinco métodos:
- URL firmada para enlaces de descarga de corta duración aprobados por el servidor.
- Acceso autenticado para una sesión de usuario de Drupal con permiso para recibir el archivo.
- Token revocable o precompartido para flujos de trabajo externos controlados.
- Código de un solo uso para un desafío entregado por un canal independiente.
- Bloqueo por referente/origen para una restricción estrecha de entrega dentro del mismo sitio; esto es defensa en profundidad, no identidad.
Los submódulos opcionales añaden tres más:
- File Gate Form registra un envío de Webform y emite una concesión cuando el formulario se completa con éxito. Incluye huella digital de envíos y controles contra abusos, pero el sitio sigue siendo responsable del texto de consentimiento, la retención y la política de tratamiento de clientes potenciales.
- File Gate Commerce verifica pedidos de Drupal Commerce o un servicio de derechos de acceso reemplazable. Restringe el acceso; no es DRM.
- File Gate Assurance acepta garantía de identidad acotada desde OIDC o WebAuthn nativo. Admite autenticación por hardware con el proveedor de identidad como primer paso, vinculación opcional por usuario, DPoP y señales mTLS de borde de confianza, sin pretender que la posesión de un enlace firmado equivalga a identidad.
Cada método implementa el mismo contrato de complemento GateMethod, de modo que un sitio puede añadir una decisión específica de su misión sin bifurcar la canalización de descarga.
Controles de seguridad y operativos
- Falla en modo cerrado: si el material de firma requerido falta o no es válido, la emisión devuelve un error y las descargas protegidas permanecen denegadas.
- Secretos con alcance limitado: la emisión y la firma de descargas pueden usar secretos actuales y anteriores independientes, lo que permite la rotación sin invalidar todas las concesiones en curso.
- Vida corta y uso acotado: los TTL por campo, las ventanas de disponibilidad absolutas y los límites de uso —incluidos los enlaces de un solo uso— quedan vinculados a la concesión firmada.
- Revocación: los operadores pueden revocar concesiones individuales o revocar en bloque las concesiones activas a través de la API.
- Puntos de auditoría: el módulo registra emisiones, entregas, denegaciones y fallas de configuración. Cuando Audit Chain está habilitado, esos eventos también pueden incorporarse a un registro duradero con evidencia de manipulación.
- Flujo de trabajo editorial: un permiso de omisión asignado de forma restringida permite a editores de confianza inspeccionar archivos protegidos en Drupal sin debilitar la entrega anónima.
Lo que File Gate no hace
File Gate no puede recuperar la confidencialidad después de una descarga autorizada, reemplazar la política de verificación de identidad, decidir si una compra debe reembolsarse ni hacer confiables las cabeceras de referente. No mueve retroactivamente archivos públicos al almacenamiento privado; los operadores deben migrar los archivos existentes de forma deliberada. Un front end nunca debe exponer las credenciales de emisión al navegador. Los proxies inversos y las CDN deben preservar las cabeceras de caché privadas del módulo y no deben almacenar en caché las respuestas de entrega autenticada.
El submódulo de garantía verifica reclamaciones específicas y evidencia criptográfica; no certifica un proveedor de identidad, un programa PIV ni la postura de cumplimiento de una organización. Los operadores siguen siendo responsables de la audiencia del token, el emisor, la rotación de claves, el consentimiento, la retención y la respuesta a incidentes.
Requisitos e instalación
- PHP 8.3 o posterior.
- Drupal 11.4 o Drupal 12. El mínimo de 11.4 proviene del
FileReferenceResolverdel núcleo. - Un sistema de archivos privado configurado.
- Material de firma inyectado mediante configuración respaldada por variables de entorno, no YAML exportado.
composer require drupal/file_gate
drush en file_gate
Configure un campo en los ajustes de campo de Drupal, elija el método de acceso, establezca el TTL y las reglas de uso, y luego integre el punto de emisión desde una ruta de confianza del lado del servidor. El repositorio incluye el contrato de la API HTTP, la API de complementos, la guía de auditoría, el modelo de despliegue de garantía, el procedimiento operativo de rotación de secretos y listas de verificación manuales de extremo a extremo.
Proyecto, código fuente, soporte y lecturas adicionales
- Página del proyecto File Gate y versiones en Drupal.org
- Código fuente y documentación en GitHub
- Cola de incidencias y solicitudes de soporte en Drupal.org
- Referencia de la API HTTP y de complementos
- Notas de diseño de PIV/CAC y WebAuthn
- Informe técnico: Restringir archivos privados en un CMS desacoplado
- Artículo: Cuando un enlace de descarga no es suficiente
File Gate es mantenido por Jeremy Michael Cerda y Wilkes & Liberty. Las contribuciones son bienvenidas bajo GPL-2.0-or-later. La versión del código fuente verificada para esta página es la 1.6.1.