{"title":"Bagaimana mengautentifikasi terhadap basisdata pengguna Django dari Apache","version":"5.2","locale":"id","docname":"howto/deployment/wsgi/apache-auth","url":"/id/5.2/howto/deployment/wsgi/apache-auth/","canonical":"https://djangodocs.dev/id/5.2/howto/deployment/wsgi/apache-auth/","summary":"Sejak menjaga banyak otentifikasi basisdata di sinkronasi adalah masalah utama ketika berhadapan dengan Apache, anda dapat mengkonfigurasi Apache untuk otentifikasi…","html":"<h1>Bagaimana mengautentifikasi terhadap basisdata pengguna Django dari Apache<a class=\"heading-anchor\" href=\"#how-to-authenticate-against-django-s-user-database-from-apache\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Sejak menjaga banyak otentifikasi basisdata di sinkronasi adalah masalah utama ketika berhadapan dengan Apache, anda dapat mengkonfigurasi Apache untuk otentifikasi terhadap <a class=\"reference internal\" href=\"/id/5.2/topics/auth/\"><span class=\"doc\">authentication system</span></a> Django secara langsung. Ini membutuhkan Apache versi &gt;= 2.2 dan mod_wsgi &gt;= 2.0. Sebagai contoh, anda dapat:</p>\n<ul class=\"simple\">\n<li><p>Melayani berkas statis/media secara langsung dari Apache hanya untuk membuktikan keaslian pengguna.</p></li>\n<li><p>Akses otentifikasi pada sebuah gudang <a class=\"reference external\" href=\"https://subversion.apache.org/\">Subversion</a> terhadap pengguna Django dengan perizinan tertentu.</p></li>\n<li><p>Mengizinkan pengguna tertentu untuk terhubung ke berbagi WebDAV dibuat dengan <a class=\"reference external\" href=\"https://httpd.apache.org/docs/2.2/mod/mod_dav.html\">mod_dav</a>.</p></li>\n</ul>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Catatan</p>\n<p>Jika anda telah memasang <a class=\"reference internal\" href=\"/id/5.2/topics/auth/customizing/#auth-custom-user\"><span class=\"std std-ref\">custom user model</span></a> dan ingin menggunakan awalan penangan kesahihan, itu harus mendukung atribut <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code>. 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.</p>\n</aside>\n<section id=\"authentication-with-mod-wsgi\">\n<h2>Pembuktian keaslian dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">mod_wsgi</span></code><a class=\"heading-anchor\" href=\"#authentication-with-mod-wsgi\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Catatan</p>\n<p>Penggunaan dari <code class=\"docutils literal notranslate\"><span class=\"pre\">WSGIApplicationGroup</span> <span class=\"pre\">%{GLOBAL}</span></code> 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 <a class=\"reference external\" href=\"https://modwsgi.readthedocs.io/en/develop/user-guides/configuration-guidelines.html#defining-application-groups\">Defining Application Groups</a> dari dokumen mod_wsgi untuk informasi lebih tentang pengaturan ini.</p>\n</aside>\n<p>Pastikan bahwa mod_wsgi terpasang dan aktif dan anda telah mengikuti langkah-langkah untuk menyetel <a class=\"reference internal\" href=\"/id/5.2/howto/deployment/wsgi/modwsgi/\"><span class=\"doc\">Apache with mod_wsgi</span></a>.</p>\n<p>Selanjutnya, sunting konfigurasi Apache anda untuk menambahkan tempat yang anda ingin dibuktikan keaslian pengguna untuk dapat melihat:</p>\n<div class=\"code-block\" data-language=\"apache\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Apache</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Apache code\"><code><span class=\"nb\">WSGIScriptAlias</span><span class=\"w\"> </span>/<span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n<span class=\"nb\">WSGIPythonPath</span><span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com</span>\n\n<span class=\"nb\">WSGIProcessGroup</span><span class=\"w\"> </span>%{GLOBAL}\n<span class=\"nb\">WSGIApplicationGroup</span><span class=\"w\"> </span>%{GLOBAL}\n\n<span class=\"nt\">&lt;Location</span><span class=\"w\"> </span><span class=\"s\">&quot;/secret&quot;</span><span class=\"nt\">&gt;</span>\n<span class=\"w\">    </span><span class=\"nb\">AuthType</span><span class=\"w\"> </span>Basic\n<span class=\"w\">    </span><span class=\"nb\">AuthName</span><span class=\"w\"> </span><span class=\"s2\">&quot;Top Secret&quot;</span>\n<span class=\"w\">    </span><span class=\"nb\">Require</span><span class=\"w\"> </span>valid-user\n<span class=\"w\">    </span><span class=\"nb\">AuthBasicProvider</span><span class=\"w\"> </span>wsgi\n<span class=\"w\">    </span><span class=\"nb\">WSGIAuthUserScript</span><span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n<span class=\"nt\">&lt;/Location&gt;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">WSGIAuthUserScript</span></code> yang memerintahkan memberitahu mod_wsgi untuk menjalankan fungsi <code class=\"docutils literal notranslate\"><span class=\"pre\">check_password</span></code> di tulisan wsgi yang lebih khusus, melewati nama pengguna dan sandi yang dia menerimanya dari prompt. Di contoh ini, <code class=\"docutils literal notranslate\"><span class=\"pre\">WSGIAuthUserScript</span></code> adalah sama seperti <code class=\"docutils literal notranslate\"><span class=\"pre\">WSGIScriptAlias</span></code> yang menentukan aplikasi anda <a class=\"reference internal\" href=\"/id/5.2/howto/deployment/wsgi/\"><span class=\"doc\">yang dibuat oleh django-admin startproject</span></a>.</p>\n<aside class=\"admonition-using-apache-2-2-with-authentication admonition\">\n<p class=\"admonition-title\">Menggunakan Apache 2.2 dengan pembuktian keaslian</p>\n<p>Pastikan bahwa <code class=\"docutils literal notranslate\"><span class=\"pre\">mod_auth_basic</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">mod_authz_user</span></code> dimuat.</p>\n<p>Ini mungkin disusun secara tetap kedalam Apache, atau anda mungkin butuh menggunakan LoadModule untuk memuat mereka secara dinamis dalam <code class=\"docutils literal notranslate\"><span class=\"pre\">httpd.conf</span></code> anda:</p>\n<div class=\"code-block\" data-language=\"apache\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Apache</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Apache code\"><code><span class=\"nb\">LoadModule</span><span class=\"w\"> </span>auth_basic_module<span class=\"w\"> </span>modules/mod_auth_basic.so\n<span class=\"nb\">LoadModule</span><span class=\"w\"> </span>authz_user_module<span class=\"w\"> </span>modules/mod_authz_user.so\n</code></pre></div>\n</aside>\n<p>Akhirnya sunting tulisan WSGI anda <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite.wsgi</span></code> ke pembuktian keaslian Apache ke mekanisme pembuktian keaslian situs anda dengan mengimpor fungsi <code class=\"docutils literal notranslate\"><span class=\"pre\">check_password</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">os</span>\n\n<span class=\"n\">os</span><span class=\"o\">.</span><span class=\"n\">environ</span><span class=\"p\">[</span><span class=\"s2\">&quot;DJANGO_SETTINGS_MODULE&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;mysite.settings&quot;</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.auth.handlers.modwsgi</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">check_password</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.handlers.wsgi</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">WSGIHandler</span>\n\n<span class=\"n\">application</span> <span class=\"o\">=</span> <span class=\"n\">WSGIHandler</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Permintaan dimulai dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">/secret/</span></code> akan sekarang membutuhkan pengguna untuk dibuktikan keasliannya.</p>\n<p>mod_wsgi <a class=\"reference external\" href=\"https://modwsgi.readthedocs.io/en/develop/user-guides/access-control-mechanisms.html\">dokumentasi mekanisme kendali akses</a> menyediakan tambahan rincian dan informasi tentang cara lain dari pembuktian keaslian.</p>\n<section id=\"authorization-with-mod-wsgi-and-django-groups\">\n<h3>Otorisasi dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">mod_wsgi</span></code> dan kelompok Django<a class=\"heading-anchor\" href=\"#authorization-with-mod-wsgi-and-django-groups\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>mod_wsgi juga menyediakan fungsi untuk membatasi sebagian tempat untuk anggota kelompok.</p>\n<p>Dalam kasus ini, konfigurasi Apache harus kelihatan seperti ini:</p>\n<div class=\"code-block\" data-language=\"apache\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Apache</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Apache code\"><code><span class=\"nb\">WSGIScriptAlias</span><span class=\"w\"> </span>/<span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n\n<span class=\"nb\">WSGIProcessGroup</span><span class=\"w\"> </span>%{GLOBAL}\n<span class=\"nb\">WSGIApplicationGroup</span><span class=\"w\"> </span>%{GLOBAL}\n\n<span class=\"nt\">&lt;Location</span><span class=\"w\"> </span><span class=\"s\">&quot;/secret&quot;</span><span class=\"nt\">&gt;</span>\n<span class=\"w\">    </span><span class=\"nb\">AuthType</span><span class=\"w\"> </span>Basic\n<span class=\"w\">    </span><span class=\"nb\">AuthName</span><span class=\"w\"> </span><span class=\"s2\">&quot;Top Secret&quot;</span>\n<span class=\"w\">    </span><span class=\"nb\">AuthBasicProvider</span><span class=\"w\"> </span>wsgi\n<span class=\"w\">    </span><span class=\"nb\">WSGIAuthUserScript</span><span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n<span class=\"w\">    </span><span class=\"nb\">WSGIAuthGroupScript</span><span class=\"w\"> </span><span class=\"sx\">/path/to/mysite.com/mysite/wsgi.py</span>\n<span class=\"w\">    </span><span class=\"nb\">Require</span><span class=\"w\"> </span><span class=\"k\">group</span><span class=\"w\"> </span>secret-agents\n<span class=\"w\">    </span><span class=\"nb\">Require</span><span class=\"w\"> </span>valid-user\n<span class=\"nt\">&lt;/Location&gt;</span>\n</code></pre></div>\n<p>Untuk mendukung perintah <code class=\"docutils literal notranslate\"><span class=\"pre\">WSGIAuthGroupScript</span></code>, tulisan WSGI sama <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite.wsgi</span></code> harus juga mengimpor fungsi <code class=\"docutils literal notranslate\"><span class=\"pre\">groups_for_user</span></code> yang mengembalikan daftar kelompok milik pengguna yang diberikan.</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.auth.handlers.modwsgi</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">check_password</span><span class=\"p\">,</span> <span class=\"n\">groups_for_user</span>\n</code></pre></div>\n<p>Permintaan untuk <code class=\"docutils literal notranslate\"><span class=\"pre\">/secret/</span></code> akan juga membutuhkan pengguna menjadi anggota dari kelompok &quot;secret-agents&quot;.</p>\n</section>\n</section>","rootId":"how-to-authenticate-against-django-s-user-database-from-apache","toc":[{"title":"Pembuktian keaslian dengan mod_wsgi","anchor":"authentication-with-mod-wsgi","children":[{"title":"Otorisasi dengan mod_wsgi dan kelompok Django","anchor":"authorization-with-mod-wsgi-and-django-groups","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"Panduan Cara-cara","url":"/id/5.2/howto/"},{"docname":"howto/deployment/index","title":"Bagaimana menyebarkan Django","url":"/id/5.2/howto/deployment/"},{"docname":"howto/deployment/wsgi/index","title":"Bagaimana menyebarkan dengan WSGI","url":"/id/5.2/howto/deployment/wsgi/"}],"prev":{"docname":"howto/deployment/wsgi/modwsgi","title":"Bagaimana menggunakan Django dengan Apache dan mod_wsgi","url":"/id/5.2/howto/deployment/wsgi/modwsgi/"},"next":{"docname":"howto/deployment/asgi/index","title":"Bagaimana mengembangkan dengan ASGI","url":"/id/5.2/howto/deployment/asgi/"},"formats":{"html":"/id/5.2/howto/deployment/wsgi/apache-auth/","markdown":"/id/5.2/howto/deployment/wsgi/apache-auth.md","json":"/id/5.2/howto/deployment/wsgi/apache-auth.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/howto/deployment/wsgi/apache-auth.txt","official":"https://docs.djangoproject.com/id/5.2/howto/deployment/wsgi/apache-auth/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}