Dado que mantener varias bases de datos de autenticación sincronizadas es un problema común al tratar con Apache, puedes configurar Apache para autenticarse directamente contra el sistema de autenticación de Django:doc:</topics/auth/index>. Esto requiere Apache versión >= 2.2 y mod_wsgi >= 2.0. Por ejemplo:
Servir archivos estáticos/media directamente desde Apache solo a usuarios autenticados.
Autenticar el acceso a un repositorio de Subversion contra los usuarios de Django con cierta permiso.
Permitir que ciertos usuarios se conecten a una partición WebDAV creada con mod_dav.
Nota
Si has instalado un modelo de usuario personalizado:ref:<auth-custom-user> y deseas utilizar este manejo de autenticación por defecto, debe soportar la atributo is_active. Si deseas utilizar autorización basada en grupos, tu modelo de usuario personalizado debe tener una relación llamada “groups”, que se refiere a un objeto relacionado con un campo “name”. También puedes especificar tu propio manejo de autenticación personalizado de mod_wsgi si tu modelo no puede cumplir con estas requisitos.
mod_wsgi¶Nota
El uso de WSGIApplicationGroup %{GLOBAL} en las configuraciones a continuación supone que tu instancia de Apache solo está ejecutando una aplicación Django. Si estás ejecutando más de una aplicación, por favor consulta la sección Defining Application Groups del documento de mod_wsgi para obtener más información sobre esta configuración.
Asegúrate de que mod_wsgi esté instalado y activo y de que hayas seguido los pasos para configurar Apache con mod_wsgi:doc:</howto/deployment/wsgi/modwsgi>.
A continuación, edita la configuración de Apache para agregar una ubicación a la que solo los usuarios autenticados puedan acceder:
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /path/to/mysite.com
WSGIProcessGroup %{GLOBAL}
WSGIApplicationGroup %{GLOBAL}
<Location "/secret">
AuthType Basic
AuthName "Top Secret"
Require valid-user
AuthBasicProvider wsgi
WSGIAuthUserScript /path/to/mysite.com/mysite/wsgi.py
</Location>
La traducción de los textos es la siguiente:
El uso de Apache 2.2 con autenticación
Asegúrate de que estén cargados mod_auth_basic y mod_authz_user.
Estos podrían estar compilados estáticamente en Apache, o podrías necesitar utilizar LoadModule para cargarlos dinámicamente en tu httpd.conf:
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authz_user_module modules/mod_authz_user.so
Finalmente, edita tu script WSGI mysite.wsgi para vincular la autenticación de Apache con las mecánicas de autenticación de tu sitio importando la función check_password:
import os
os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"
from django.contrib.auth.handlers.modwsgi import check_password
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
Las solicitudes que comiencen con /secret/ ahora requerirán que un usuario se autentique.
La documentación sobre los mecanismos de control de acceso de mod_wsgi `_ proporciona detalles adicionales e información sobre métodos alternativos de autenticación.
may 31, 2026