Authentification sur la base de données des utilisateurs de Django depuis ApacheLien vers cette rubrique
Étant donné que la synchronisation de plusieurs bases de données d’authentification est un problème fréquent avec Apache, vous pouvez configurer Apache afin qu’il authentifie les utilisateurs à partir du système d’authentification de Django. Cela nécessite la version 2.2 ou plus récente d’Apache ainsi que la version 2 ou plus récente de mod_wsgi. Par exemple, vous pourriez :
Servir des fichiers static/media limités aux utilisateurs authentifiés directement depuis Apache.
Accéder de manière authentifiée à un dépôt Subversion pour des utilisateurs Django ayant certaines permissions.
Permettre à certains utilisateurs de se connecter à un partage WebDAV créé avec mod_dav.
Authentification avec mod_wsgiLien vers cette rubrique
Assurez-vous que mod_wsgi est installé et activé et que vous avez suivi les étapes de configuration de Apache avec mod_wsgi.
Ensuite, modifiez votre configuration Apache pour ajouter un emplacement dont vous souhaitez limiter l’accès aux utilisateurs authentifiés :
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 directive WSGIAuthUserScript dit à mod_wsgi d’exécuter la fonction check_password dans le script wsgi indiqué, en passant le nom d’utilisateur et le mot de passe qu’il reçoit de la boîte de dialogue. Dans cet exemple, le contenu de WSGIAuthUserScript est identique à WSGIScriptAlias qui définit votre application créée par django-admin startproject.
Finalement, modifiez votre script WSGI mysite.wsgi pour lier l’authentification Apache aux mécanismes d’authentification de votre site en important la fonction 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()
Les requêtes commençant pas /secret/ vont dorénavant exiger l’authentification des utilisateurs.
La documentation sur les mécanismes de contrôle d’accès de mod_wsgi fournissent des détails supplémentaires au sujet des méthodes alternatives d’authentification.