読者です 読者をやめる 読者になる 読者になる

WSGIアプリケーションからAuthorizationヘッダーを参照する

mod_wsgi

mod_wsgiで運用しているWSGIアプリケーション内からAuthorizationヘッダー(HTTP_AUTHORIZATION)を参照する場合には、mod_wsgiのWSGIPassAuthorizationヘッダーをOnにしておかなくてはならない。デフォルトはOffなので、例えば、Djangoアプリケーションから、

def view(req):
   auth_header = req.META.get("HTTP_AUTHORIZATION")
   # do something

のようにすると、常にNoneが返ってくる。

このような設計になっている理由は、WSGIPassAuthorizationの項に書いてある。

WSGIPassAuthorizationディレクティブはHTTP認証ヘッダーがHTTPリクエストに存在するときに、その値をHTTP_AUTHORIZATION変数としてWSGIアプリケーションにそのまま渡されるかどうかを制御します。ApacheではなくWSGIアプリケーションで認証を行う場合には、この値をOnにする必要があります。

http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIPassAuthorization