{"title":"How to authenticate against Django’s user database from Apache","version":"4.1","locale":"ko","docname":"howto/deployment/wsgi/apache-auth","url":"/ko/4.1/howto/deployment/wsgi/apache-auth/","canonical":"https://djangodocs.dev/ko/4.1/howto/deployment/wsgi/apache-auth/","summary":"Apache를 처리할 때는 여러 인증 데이터베이스를 동기화하는 것이 일반적인 문제이므로 Django의 :doc:’인증 시스템’에 대해 직접 인증하도록 Apache를 구성할 수 있습니다. 이를 위해서는 Apache 버전 > > 2.2 및 mod_wsgi > > 2.0이 필요합니다. 예를 들어…","html":"<h1>How to authenticate against Django’s user database from 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>Apache를 처리할 때는 여러 인증 데이터베이스를 동기화하는 것이 일반적인 문제이므로 Django의 :doc:’인증 시스템’에 대해 직접 인증하도록 Apache를 구성할 수 있습니다. 이를 위해서는 Apache 버전 &gt; &gt; 2.2 및 mod_wsgi &gt; &gt; 2.0이 필요합니다. 예를 들어 다음과 같은 작업을 수행할 수 있습니다.</p>\n<ul class=\"simple\">\n<li><p>정적/미디어 파일을 Apache에서 인증된 사용자에게만 직접 제공합니다.</p></li>\n<li><p>특정 사용 권한을 가진 Django 사용자에 대해 Subversion_repository에 대한 액세스를 인증합니다.</p></li>\n<li><p>특정 사용자가 mod_dav_로 생성된 WebDAV 공유에 연결할 수 있습니다.</p></li>\n</ul>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">참고</p>\n<p>:ref:’custom user model’을 설치한 경우 이 기본 인증 핸들러를 사용하려면 “is_active” 속성을 지원해야 합니다. 그룹 기반 인증을 사용하려면 사용자 지정 사용자에게 ‘name’ 필드가 있는 관련 개체를 참조하는 ‘groups’라는 관계가 있어야 합니다. 또한 사용자 지정이 이러한 요구 사항을 충족할 수 없는 경우 사용자 지정 mod_wsgi 인증 처리기를 직접 지정할 수도 있습니다.</p>\n</aside>\n<section id=\"authentication-with-mod-wsgi\">\n<h2>“mod_wsgi”로 인증<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\">참고</p>\n<p>아래 구성에서 “WSGA 애플리케이션 그룹 %{GLOGL”을 사용하면 Apache 인스턴스가 Django 애플리케이션을 하나만 실행 중인 것으로 가정합니다. 둘 이상의 Django 응용 프로그램을 실행 중인 경우 이 설정에 대한 자세한 내용은 mod_wsgi 문서의 ‘응용 프로그램 그룹 정의’ 섹션을 참조하십시오.</p>\n</aside>\n<p>Make sure that mod_wsgi is installed and activated and that you have\nfollowed the steps to set up <a class=\"reference internal\" href=\"/ko/4.1/howto/deployment/wsgi/modwsgi/\"><span class=\"doc\">Apache with mod_wsgi</span></a>.</p>\n<p>그런 다음 인증된 사용자만 볼 수 있는 위치를 추가하려면 Apache 구성을 편집하십시오.</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>‘’WSGIAuthUserScript’’ 지시문은 mod_wsgi에 지정된 wsgi 스크립트에서 “check_password” 기능을 실행하라고 지시하고 프롬프트에서 수신하는 사용자 이름과 암호를 전달한다. 이 예에서 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>WSGAuthUserScript”는 당신의 애플리케이션을 정의하는 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>WSGIScriptAlias”와 동일하며 이는 django-admin start project에서 만들어진 doc:”이다.</p>\n<aside class=\"admonition-using-apache-2-2-with-authentication admonition\">\n<p class=\"admonition-title\">Apache 2.2 인증 사용법</p>\n<p>“mod_auth_basic”과 “mod_authz_user”가 로드되었는지 확인합니다.</p>\n<p>이는 정적으로 Apache로 컴파일되거나 “httpd.conf”에 로드 모듈을 사용하여 동적으로 로드해야 할 수 있습니다.</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>마지막으로 WSGI 스크립트 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>내 사이트”를 편집하십시오.wsgi는 다음과 같은 “check_password” 기능을 가져와 아파치의 인증을 사이트의 인증 메커니즘과 연결한다.</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=\"s1\">&#39;DJANGO_SETTINGS_MODULE&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;mysite.settings&#39;</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<span class=\"n\">application</span> <span class=\"o\">=</span> <span class=\"n\">WSGIHandler</span><span class=\"p\">()</span>\n</code></pre></div>\n<p><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>/secret/<a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>로 시작하는 요청은 이제 사용자가 인증해야 한다.</p>\n<p>mod_wsgi ‘액세스 제어 메커니즘 설명서’는 다른 인증 방법에 대한 추가 세부 정보와 정보를 제공한다.</p>\n<section id=\"authorization-with-mod-wsgi-and-django-groups\">\n<h3>“mod_wsgi”와 “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는 또한 특정 위치를 그룹의 멤버로 제한하는 기능을 제공한다.</p>\n<p>이 경우 Apache 구성은 다음과 같아야 합니다.</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><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>WSGAuthGroupScript”의 지시를 지지하기 위해 동일한 WSGI 스크립트는 “내 사이트”이다.wsgij는 또한 주어진 사용자가 속한 목록 그룹을 반환하는 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>groups_for_userstitute” 함수를 가져와야 한다.</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>“<code class=\"docutils literal notranslate\"><span class=\"pre\">/secret/</span></code> 에 대한 요청도 이제 사용자가 “secret-agents”그룹의 구성원이어야 할 것이다.</p>\n</section>\n</section>","rootId":"how-to-authenticate-against-django-s-user-database-from-apache","toc":[{"title":"“mod_wsgi”로 인증","anchor":"authentication-with-mod-wsgi","children":[{"title":"“mod_wsgi”와 “django” 그룹의 승인","anchor":"authorization-with-mod-wsgi-and-django-groups","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"“How-to” 가이드","url":"/ko/4.1/howto/"},{"docname":"howto/deployment/index","title":"How to deploy Django","url":"/ko/4.1/howto/deployment/"},{"docname":"howto/deployment/wsgi/index","title":"WSGI를 사용하여 배포하는 방법","url":"/ko/4.1/howto/deployment/wsgi/"}],"prev":{"docname":"howto/deployment/wsgi/modwsgi","title":"django와 아파치 사용법, mod_wsgi 사용법","url":"/ko/4.1/howto/deployment/wsgi/modwsgi/"},"next":{"docname":"howto/deployment/asgi/index","title":"ASGI를 사용하여 배포하는 방법","url":"/ko/4.1/howto/deployment/asgi/"},"formats":{"html":"/ko/4.1/howto/deployment/wsgi/apache-auth/","markdown":"/ko/4.1/howto/deployment/wsgi/apache-auth.md","json":"/ko/4.1/howto/deployment/wsgi/apache-auth.json"},"source":"https://github.com/django/django/blob/stable/4.1.x/docs/howto/deployment/wsgi/apache-auth.txt","official":"https://docs.djangoproject.com/ko/4.1/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"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}