Apache에서 Django의 사용자 데이터베이스에 대해 인증

Apache를 처리할 때는 여러 인증 데이터베이스를 동기화하는 것이 일반적인 문제이므로 Django의 :doc:〉인증 시스템’에 대해 직접 인증하도록 Apache를 구성할 수 있습니다. 이를 위해서는 Apache 버전 > > 2.2 및 mod_wsgi > > 2.0이 필요합니다. 예를 들어 다음과 같은 작업을 수행할 수 있습니다.

  • 정적/미디어 파일을 Apache에서 인증된 사용자에게만 직접 제공합니다.
  • 특정 사용 권한을 가진 Django 사용자에 대해 Subversion_repository에 대한 액세스를 인증합니다.
  • 특정 사용자가 mod_dav_로 생성된 WebDAV 공유에 연결할 수 있습니다.

주석

:ref:〉custom user model’을 설치한 경우 이 기본 인증 핸들러를 사용하려면 《is_active》 속성을 지원해야 합니다. 그룹 기반 인증을 사용하려면 사용자 지정 사용자에게 〈name〉 필드가 있는 관련 개체를 참조하는 〈groups’라는 관계가 있어야 합니다. 또한 사용자 지정이 이러한 요구 사항을 충족할 수 없는 경우 사용자 지정 mod_wsgi 인증 처리기를 직접 지정할 수도 있습니다.

《mod_wsgi》로 인증

주석

아래 구성에서 《WSGA 애플리케이션 그룹 %{GLOGL》을 사용하면 Apache 인스턴스가 Django 애플리케이션을 하나만 실행 중인 것으로 가정합니다. 둘 이상의 Django 응용 프로그램을 실행 중인 경우 이 설정에 대한 자세한 내용은 mod_wsgi 문서의 〈응용 프로그램 그룹 정의〉 섹션을 참조하십시오.

mod_wsgi가 설치 및 활성화되었는지 확인하고, 다음 단계를 따라 설정했는지 확인합니다:doc:mod_wsgi가 있는 아파치.

그런 다음 인증된 사용자만 볼 수 있는 위치를 추가하려면 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〉〉 지시문은 mod_wsgi에 지정된 wsgi 스크립트에서 《check_password》 기능을 실행하라고 지시하고 프롬프트에서 수신하는 사용자 이름과 암호를 전달한다. 이 예에서 ``WSGAuthUserScript》는 당신의 애플리케이션을 정의하는 ``WSGIScriptAlias》와 동일하며 이는 django-admin start project에서 만들어진 doc:》이다.

Apache 2.2 인증 사용법

《mod_auth_basic》과 《mod_authz_user》가 로드되었는지 확인합니다.

이는 정적으로 Apache로 컴파일되거나 《httpd.conf》에 로드 모듈을 사용하여 동적으로 로드해야 할 수 있습니다.

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authz_user_module modules/mod_authz_user.so

마지막으로 WSGI 스크립트 ``내 사이트》를 편집하십시오.wsgi는 다음과 같은 《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()

`/secret/``로 시작하는 요청은 이제 사용자가 인증해야 한다.

mod_wsgi 〈액세스 제어 메커니즘 설명서’는 다른 인증 방법에 대한 추가 세부 정보와 정보를 제공한다.

《mod_wsgi》와 《django》 그룹의 승인

mod_wsgi는 또한 특정 위치를 그룹의 멤버로 제한하는 기능을 제공한다.

이 경우 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>

``WSGAuthGroupScript》의 지시를 지지하기 위해 동일한 WSGI 스크립트는 《내 사이트》이다.wsgij는 또한 주어진 사용자가 속한 목록 그룹을 반환하는 ``groups_for_userstitute》 함수를 가져와야 한다.

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

/secret/ 에 대한 요청도 이제 사용자가 《secret-agents》그룹의 구성원이어야 할 것이다.

Back to Top