ApacheからのDjangoのユーザーデータベースに対する認証—Djangoのドキュメント
ApacheからのDjangoのユーザーデータベースに対する認証
複数の認証データベースの同期を維持することはApacheを扱う際の一般的な問題であるため、Djangoの認証システムに対して直接認証するようにApacheを構成できます。 これには、Apacheバージョン> = 2.2およびmod_wsgi> = 2.0が必要です。 たとえば、次のことができます。
- 静的/メディアファイルをApacheから認証されたユーザーにのみ直接提供します。
- 特定の権限を持つDjangoユーザーに対して Subversion リポジトリへのアクセスを認証します。
- 特定のユーザーが mod_dav で作成されたWebDAV共有に接続できるようにします。
ノート
カスタムユーザーモデルをインストールしていて、このデフォルトの認証ハンドラーを使用する場合は、is_active
属性をサポートする必要があります。 グループベースの承認を使用する場合、カスタムユーザーには、「name」フィールドを持つ関連オブジェクトを参照する「groups」という名前のリレーションが必要です。 カスタムがこれらの要件に準拠できない場合は、独自のカスタムmod_wsgi認証ハンドラーを指定することもできます。
mod_wsgiによる認証
ノート
以下の構成でWSGIApplicationGroup %{GLOBAL}
を使用することは、Apacheインスタンスが1つのDjangoアプリケーションのみを実行していることを前提としています。 複数のDjangoアプリケーションを実行している場合、この設定の詳細については、mod_wsgiドキュメントのアプリケーショングループの定義セクションを参照してください。
mod_wsgiがインストールされてアクティブ化されていること、およびmod_wsgi を使用して Apacheをセットアップする手順に従っていることを確認してください。
次に、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
関数を実行し、プロンプトから受け取ったユーザー名とパスワードを渡すように指示します。 この例では、WSGIAuthUserScript
は、django-admin startproject によって作成されるアプリケーションを定義するWSGIScriptAlias
と同じです。
認証でのApache2.2の使用
mod_auth_basic
とmod_authz_user
がロードされていることを確認してください。
これらは静的にApacheにコンパイルされるか、LoadModuleを使用してhttpd.conf
に動的にロードする必要がある場合があります。
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authz_user_module modules/mod_authz_user.so
最後に、WSGIスクリプトmysite.wsgi
を編集して、check_password
関数をインポートすることにより、Apacheの認証をサイトの認証メカニズムに関連付けます。
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 アクセス制御メカニズムのドキュメントは、認証の代替方法に関する追加の詳細と情報を提供します。