Pembuktian keaslian terhadap pengguna basisdata Django dari ApacheLink to this heading

Sejak menjaga banyak pembuktian keaslian basisdata di sinkronasi adalah masalah utama ketika berhadapan dengan Apache, anda dapat mengkonfigurasi Apache untuk membuktikan keaslian terhadap sistem pembuktian keaslian Django secara langsung. Ini membutuhkan Apache versi >= 2.2 dan mod_wsgi >= 2.0. Sebagai contoh, anda dapat:

  • Melayani berkas statis/media secara langsung dari Apache hanya untuk membuktikan keaslian pengguna.

  • Akses pembuktian keaslian pada sebuah gudang Subversion terhadap pengguna Django dengan perizinan tertentu.

  • Mengizinkan pengguna tertentu untuk terhubung ke berbagi WebDAV dibuat dengan mod_dav.

Pembuktian keaslian dengan mod_wsgiLink to this heading

Pastikan bahwa mod_wsgi telah dipasang dan diaktivasi dan bahwa anda telah mengikuti langkah-langkah untuk mengatur Apache dengan mod_wsgi.

Selanjutnya, sunting konfigurasi Apache anda untuk menambahkan tempat yang anda ingin dibuktikan keaslian pengguna untuk dapat melihat:

Apache
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>

WSGIAuthUserScript yang memerintahkan memberitahu mod_wsgi untuk menjalankan fungsi check_password di tulisan wsgi yang lebih khusus, melewati nama pengguna dan sandi yang dia menerimanya dari prompt. Di contoh ini, WSGIAuthUserScript adalah sama seperti WSGIScriptAlias yang menentukan aplikasi anda yang dibuat oleh django-admin startproject.

Akhirnya sunting tulisan WSGI anda mysite.wsgi ke pembuktian keaslian Apache ke mekanisme pembuktian keaslian situs anda dengan mengimpor fungsi check_password:

Code
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()

Permintaan dimulai dengan /secret/ akan sekarang membutuhkan pengguna untuk dibuktikan keasliannya.

mod_wsgi dokumentasi mekanisme kendali akses menyediakan tambahan rincian dan informasi tentang cara lain dari pembuktian keaslian.

Otorisasi dengan mod_wsgi dan kelompok DjangoLink to this heading

mod_wsgi juga menyediakan fungsi untuk membatasi sebagian tempat untuk anggota kelompok.

Dalam kasus ini, konfigurasi Apache harus kelihatan seperti ini:

Apache
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py

WSGIProcessGroup %{GLOBAL}
WSGIApplicationGroup %{GLOBAL}

<Location "/secret">
    AuthType Basic
    AuthName "Top Secret"
    AuthBasicProvider wsgi
    WSGIAuthUserScript /path/to/mysite.com/mysite/wsgi.py
    WSGIAuthGroupScript /path/to/mysite.com/mysite/wsgi.py
    Require group secret-agents
    Require valid-user
</Location>

Untuk mendukung perintah WSGIAuthGroupScript, tulisan WSGI sama mysite.wsgi harus juga mengimpor fungsi groups_for_user yang mengembalikan daftar kelompok milik pengguna yang diberikan.

Python
from django.contrib.auth.handlers.modwsgi import check_password, groups_for_user

Permintaan untuk /secret/ akan juga membutuhkan pengguna menjadi anggota dari kelompok "secret-agents".