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

Sejak menjaga banyak otentifikasi basisdata di sinkronasi adalah masalah utama ketika berhadapan dengan Apache, anda dapat mengkonfigurasi Apache untuk otentifikasi terhadap [authentication system](/id/5.1/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 otentifikasi pada sebuah gudang [Subversion](https://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 [custom user model](/id/5.1/topics/auth/customizing/#auth-custom-user) dan ingin menggunakan awalan penangan kesahihan, itu harus mendukung atribut `is_active`. Jika anda ingin menggunakan otorisasi berdasarkan kelompok, pengguna penyesuaian anda harus mempunyai hubungan bernama 'groups', mengacu ke obyek terkait yang mempunyai nama ''name''. Anda dapat juga menentukan penangan otentifikasi mod\_wsgi penyesuaian anda jika penyesuaian anda tidak sesuai pada persyaratan ini.

## Pembuktian keaslian dengan `mod_wsgi`

> **Note**
>
> Penggunaan dari `WSGIApplicationGroup %{GLOBAL}` di konfigurasi dibawah menganggap bahwa instance Apache anda sedang menjalankan hanya satu aplikasi Django. Jika anda sedang menjalankan lebih dari satu aplikasi Django, silahkan mengacu pada bagian [Defining Application Groups](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 terpasang dan aktif dan anda telah mengikuti langkah-langkah untuk menyetel [Apache with mod\_wsgi](/id/5.1/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/5.1/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".
