---
title: "Pembuktian keaslian terhadap pengguna basisdata Django dari Apache"
version: 1.9
locale: id
source: https://docs.djangoproject.com/id/1.9/howto/deployment/wsgi/apache-auth/
canonical: https://djangodocs.dev/id/1.9/howto/deployment/wsgi/apache-auth/
---
# Pembuktian keaslian terhadap pengguna basisdata Django dari Apache

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](/id/1.9/topics/auth/) 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](http://subversion.apache.org/) terhadap pengguna Django dengan perizinan tertentu.
- Mengizinkan pengguna tertentu untuk terhubung ke berbagi WebDAV dibuat dengan [mod\_dav](https://httpd.apache.org/docs/2.2/mod/mod_dav.html).

> **Note**
>
> Jika anda telah memasang sebuah [custom User model](/id/1.9/topics/auth/customizing/#auth-custom-user) dan ingin menggunakan penangan pembuktian keaslian awal ini, itu harus mendukung sebuah atribut `is_active`. Jika anda ingin menggunakan kelompok berdasarkan pembuktian keaslian, pengguna disesuaikan anda harus mempunyai hubungan dinamai 'groups', mengacu pada obyek terhubung yang mempunyai bidang 'name'. Anda dapat juga menentukan penangan pembuktian keaslian mod\_wsgi disesuaikan jika sistem anda tidak dapat sesuai ke persyaratan ini.

## Pembuktian keaslian dengan `mod_wsgi`

> **Note**
>
> Penggunaan dari `WSGIApplicationGroup %{GLOBAL}` di konfigurasi dibawah menganggap bahwa instance Apache anda sedang menjalankan hanya satu alikasi Django. Jika anda sedang menjalankan lebih dati satu aplikasi Django, silahkan mengacu pada bagian [Menentukan Aplikasi Kelompok](https://modwsgi.readthedocs.io/en/develop/user-guides/configuration-guidelines.html#defining-application-groups) dari dokumen mod\_wsgi untuk informasi lebih tentang pengaturan ini.

Pastikan bahwa mod\_wsgi telah dipasang dan diaktivasi dan bahwa anda telah mengikuti langkah-langkah untuk mengatur [Apache dengan mod\_wsgi](/id/1.9/howto/deployment/wsgi/modwsgi/).

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](/id/1.9/howto/deployment/wsgi/).

> **Menggunakan Apache 2.2 dengan pembuktian keaslian**
>
> Pastikan bahwa `mod_auth_basic` and `mod_authz_user` dimuat.
>
> Ini mungkin disusun secara tetap kedalam Apache, atau anda mungkin butuh menggunakan LoadModule untuk memuat mereka secara dinamis dalam `httpd.conf` anda:
>
> ```apache
> LoadModule auth_basic_module modules/mod_auth_basic.so
> LoadModule authz_user_module modules/mod_authz_user.so
> ```

Akhirnya sunting tulisan WSGI anda `mysite.wsgi` ke pembuktian keaslian Apache ke mekanisme pembuktian keaslian situs anda dengan mengimpor fungsi `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()
```

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

mod\_wsgi [dokumentasi mekanisme kendali akses](https://modwsgi.readthedocs.io/en/develop/user-guides/access-control-mechanisms.html) menyediakan tambahan rincian dan informasi tentang cara lain dari pembuktian keaslian.

### Otorisasi dengan `mod_wsgi` dan kelompok Django

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".
