| 1 |
=========================================================================== |
|---|
| 2 |
Authentification depuis Apache via la base de données utilisateur de Django |
|---|
| 3 |
=========================================================================== |
|---|
| 4 |
|
|---|
| 5 |
Etant donné que garder synchronisées plusieurs bases de données est un problÚme |
|---|
| 6 |
souvent rencontré avec l'utilisation d'Apache, vous pouvez directement configurer |
|---|
| 7 |
Apache pour s'authentifier via le `systÚme d'authentification`_ de Django. |
|---|
| 8 |
Par exemple, vous pouvez: |
|---|
| 9 |
|
|---|
| 10 |
* Servir des fichiers statiques/médias depuis Apache directement, uniquement |
|---|
| 11 |
pour les utilisateurs authentifiés. |
|---|
| 12 |
|
|---|
| 13 |
* Sécuriser l'accÚs à un dépÎt Subversion_ pour les utilisateurs de Django |
|---|
| 14 |
avec une permission définie. |
|---|
| 15 |
|
|---|
| 16 |
* Permettre à certains utilisateurs de se connecter à un partage Webdav |
|---|
| 17 |
créé avec mod_dav_. |
|---|
| 18 |
|
|---|
| 19 |
Configuration d'Apache |
|---|
| 20 |
====================== |
|---|
| 21 |
|
|---|
| 22 |
Pour contrÎler l'accÚs avec la base de données d'authentification de Django depuis |
|---|
| 23 |
un fichier de configuration d'Apache, vous devez utiliser la directive |
|---|
| 24 |
``PythonAuthenHandler`` de mod_python associée avec les directives standard |
|---|
| 25 |
``Auth*`` et ``Require``:: |
|---|
| 26 |
|
|---|
| 27 |
<Location /exemple/> |
|---|
| 28 |
AuthType Basic |
|---|
| 29 |
AuthName "exemple.com" |
|---|
| 30 |
Require valid-user |
|---|
| 31 |
|
|---|
| 32 |
SetEnv DJANGO_SETTINGS_MODULE monsite.settings |
|---|
| 33 |
PythonAuthenHandler django.contrib.auth.handlers.modpython |
|---|
| 34 |
</Location> |
|---|
| 35 |
|
|---|
| 36 |
.. admonition:: Utilisation de l'authentification avec Apache 2.2 |
|---|
| 37 |
|
|---|
| 38 |
Si vous utilisez Apache 2.2, vous aurez besoin de quelques étapes en plus. |
|---|
| 39 |
|
|---|
| 40 |
Vous devez vous assurez que ``mod_auth_basic`` et ``mod_authz_user`` sont |
|---|
| 41 |
chargés. Ils peuvent être compilés statiquement avec Apache, ou vous |
|---|
| 42 |
pourriez avoir besoin d'utiliser ``LoadModule`` pour les charger |
|---|
| 43 |
dynamiquement (tel qu'illustré dans l'exemple qui suit cette note). |
|---|
| 44 |
|
|---|
| 45 |
Vous aurez aussi besoin d'insérer des diredtives de configuration prévenant |
|---|
| 46 |
Apache de ne pas utiliser d'autre modules d'autentification. En fonction |
|---|
| 47 |
des autres modules que vous avez chargé, vous aurez besoin d'une ou |
|---|
| 48 |
plusieurs des directives suivantes:: |
|---|
| 49 |
|
|---|
| 50 |
AuthBasicAuthoritative Off |
|---|
| 51 |
AuthDefaultAuthoritative Off |
|---|
| 52 |
AuthzLDAPAuthoritative Off |
|---|
| 53 |
AuthzDBMAuthoritative Off |
|---|
| 54 |
AuthzDefaultAuthoritative Off |
|---|
| 55 |
AuthzGroupFileAuthoritative Off |
|---|
| 56 |
AuthzOwnerAuthoritative Off |
|---|
| 57 |
AuthzUserAuthoritative Off |
|---|
| 58 |
|
|---|
| 59 |
Une configuration complÚte, avec les différences entre Apache 2.0 et |
|---|
| 60 |
Apache 2.2 représentées en gras, pourrait ressembler à cela: |
|---|
| 61 |
|
|---|
| 62 |
.. parsed-literal:: |
|---|
| 63 |
|
|---|
| 64 |
**LoadModule auth_basic_module modules/mod_auth_basic.so** |
|---|
| 65 |
**LoadModule authz_user_module modules/mod_authz_user.so** |
|---|
| 66 |
|
|---|
| 67 |
... |
|---|
| 68 |
|
|---|
| 69 |
<Location /exmaple/> |
|---|
| 70 |
AuthType Basic |
|---|
| 71 |
AuthName "example.com" |
|---|
| 72 |
**AuthBasicAuthoritative Off** |
|---|
| 73 |
Require valid-user |
|---|
| 74 |
|
|---|
| 75 |
SetEnv DJANGO_SETTINGS_MODULE mysite.settings |
|---|
| 76 |
PythonAuthenHandler django.contrib.auth.handlers.modpython |
|---|
| 77 |
</Location> |
|---|
| 78 |
|
|---|
| 79 |
Par défaut, le gestionnaire d'authentification limitera l'accÚs à l'emplacement |
|---|
| 80 |
``/exemple/`` pour les utilisateurs ayant la propriété ``staff``. |
|---|
| 81 |
Vous pouvez utiliser un ensemble de directives ``PythonOption`` pour modifier |
|---|
| 82 |
ce comportement: |
|---|
| 83 |
|
|---|
| 84 |
================================ ========================================= |
|---|
| 85 |
``PythonOption`` Explication |
|---|
| 86 |
================================ ========================================= |
|---|
| 87 |
``DjangoRequireStaffStatus`` Si positionnée à ``on`` seuls les utilisateurs |
|---|
| 88 |
``staff`` (i.e. ceux dont la valeur ``is_staff`` |
|---|
| 89 |
est assignée) seront autorisés. |
|---|
| 90 |
|
|---|
| 91 |
Par défaut à ``on``. |
|---|
| 92 |
|
|---|
| 93 |
``DjangoRequireSuperuserStatus`` Si positionnée à ``on`` seuls les superutilisateurs |
|---|
| 94 |
(i.e. ceux dont la valeur ``is_superuser`` |
|---|
| 95 |
est assignée) seront autorisés. |
|---|
| 96 |
|
|---|
| 97 |
Par défaut à ``off``. |
|---|
| 98 |
|
|---|
| 99 |
``DjangoPermissionName`` Nom d'une permission requise pour l'accÚs. |
|---|
| 100 |
Voir les `permissions personnalisées`_ |
|---|
| 101 |
pour plus d'information. |
|---|
| 102 |
|
|---|
| 103 |
Par défaut aucune permission spéciale |
|---|
| 104 |
n'est requise. |
|---|
| 105 |
================================ ========================================= |
|---|
| 106 |
|
|---|
| 107 |
Notez que parfois ``SetEnv`` n'est pas bien reconnu dans cette configuration |
|---|
| 108 |
de mod_python, pour des raisons inconnues. Si vous rencontrez des problÚmes |
|---|
| 109 |
pour faire reconnaître à mod_python votre ``DJANGO_SETTINGS_MODULE``, vous |
|---|
| 110 |
pouvez l'assigner en utilisant ``PythonOption`` au lieu de ``SetEnv``. Par |
|---|
| 111 |
conséquent, ces deux directives Apache sont équivalentes:: |
|---|
| 112 |
|
|---|
| 113 |
SetEnv DJANGO_SETTINGS_MODULE mysite.settings |
|---|
| 114 |
PythonOption DJANGO_SETTINGS_MODULE mysite.settings |
|---|
| 115 |
|
|---|
| 116 |
.. _systÚme d'authentification: ../authentication/ |
|---|
| 117 |
.. _Subversion: http://subversion.tigris.org/ |
|---|
| 118 |
.. _mod_dav: http://httpd.apache.org/docs/2.0/mod/mod_dav.html |
|---|
| 119 |
.. _permissions personnalisées: ../authentication/#custom-permissions |
|---|