Apache2::Access
編集中のページです。mod_perl2 Documentsを和訳しています。
コンテンツ
use Apache2::Access ();
# GET methodのみを許可する
$r->allow_methods(1, qw(GET));
# Apache オプションの値
$options = $r->allow_options();
# Apache AllowOverride value
$allow_override = $r->allow_overrides();
# AllowOverrideでどのオプションが許可されているか (Apache 2.2以降)
$allow_override_opts = $r->allow_override_opts();
# auth name ("foo bar")
$auth_name = $r->auth_name();
# 認証タイプ
$auth_type = $r->auth_type();
$r->auth_type("Digest");
# Basic 認証プロセス
my ($rc, $passwd) = $r->get_basic_auth_pw();
# リモートユーザのログイン名 (RFC1413)
$remote_logname = $r->get_remote_logname();
# 認証の失敗を動的に記録
$r->note_auth_failure();
# Basic 認証の失敗を記録
$r->note_basic_auth_failure();
# Digest 認証の失敗を記録
$r->note_digest_auth_failure();
# Apache Request の値
$requires = $r->requires();
# Apache が満たした値 (as a number)
$satisfy = $r->satisfies();
# 認証が設定されているかのチェック
$need_auth = $r->some_auth_required();
このモジュールが提供するAPIは、アクセス、認証、承認のフェーズを扱う。
Apache2::accessはApache2::RequestRecを拡張する。
Apache2::accessは、以下の関数、および/または メソッドを提供する:
許可するHTTPメソッドを指定する
$r->allow_methods($reset);
$r->allow_methods($reset, @methods);
- obj: $r(Apache2::RequestRec オブジェクト)
- 現在のリクエスト
- arg1: $reset(boolean)
- true値を指定した場合、以前に許可したメソッドは全て除外される。しかし、リストは無傷で残る。
- opt arg2: @methods(array of strings)
- 許可するHTTPメソッドのリスト(e.g. GETおよびPOST)
- ret: 返り値なし
- since: 2.0.00
例: 直前の設定によらず、GETおよびPOSTメソッドのみを許可する場合:
$r->allow_methods(1, qw(GET POST));
このリクエストのオプションを検索する
$options = $r->allow_options();
- obj: $r(Apache2::RequestRec オブジェクト)
- 現在のリクエスト
- ret: $options(integer)
- オプションのビットマスク。通常 Apache2::Const :options constants に対して、ビット論理演算子とともに使用される。
- since: 2.0.00
例: 現在のリクエストの設定が次のようだった場合:
Options None
Options Indexes FollowSymLinks
以下が当てはまる
use Apache2::Const -compile => qw(:options);
$r->allow_options & Apache2::Const::OPT_INDEXES; # TRUE
$r->allow_options & Apache2::Const::OPT_SYM_LINKS; # TRUE
$r->allow_options & Apache2::Const::OPT_EXECCGI; # FALSE
このリクエストのAllowOverrideの値を検索する
$allow_override = $r->allow_overrides();
- obj: $r(Apache2::RequestRec オブジェクト)
- 現在のリクエスト
- ret: $allow_override(integer)
- AllowOverrideのビットマスク。通常 Apache2::Const :override constants に対して、ビット論理演算子とともに使用される。
- since: 2.0.00
例: 現在のリクエストの設定が次のようだった場合:
AllowOverride AuthConfig
以下が当てはまる
use Apache2::Const -compile => qw(:override);
$r->allow_overrides & Apache2::Const::OR_AUTHCFG; # TRUE
$r->allow_overrides & Apache2::Const::OR_LIMIT; # FALSE
このリクエストの、AllowOverride Options=... で許可されたオプションのビットマスクを検索する
$override_opts = $r->allow_override_opts();
単一オプションの有効化は、Apache 2.2で導入された。Apache 2.0では、この関数は、Apache2::Const::OPT_UNSET | Apache2::Const::OPT_ALL | Apache2::Const::OPT_INCNOEXEC | Apache2::Const::OPT_SYM_OWNER | Apache2::Const::OPT_MULTI を返す。この値はApache 2.2でのデフォルト値(設定していなければ)に一致する。
- obj: $r(Apache2::RequestRec オブジェクト)
- 現在のリクエスト
- ret: $override_opts(integer)
- overrideオプションのビットマスク。通常 Apache2::Const :options constants に対して、ビット演算演算子とともに使用される。
- since: 2.0.3
例: 現在のリクエストの設定が次のようだった場合:
AllowOverride Options=Indexes,ExecCGI
以下が当てはまる
use Apache2::Const -compile => qw(:options);
$r->allow_override_opts & Apache2::Const::OPT_EXECCGI; # TRUE
$r->allow_override_opts & Apache2::Const::OPT_SYM_LINKS; # FALSE
現在の認可領域(realm)を取得、または設定する(ディレクトリ毎の設定ディレクティブ AuthName ):
$auth_name = $r->auth_name();
$auth_name = $r->auth_name($new_auth_name);
- obj: $r(Apache2::RequestRec オブジェクト)
- 現在のリクエスト
- opt arg1: $new_auth_name(string)
- $new_auth_nameを指定する場合、新しいAuthName値が設定される
- ret: $(integer)
- 現在のAuthName値
- since: 2.0.00
AuthNameディレクティブは、サーバのドキュメント空間に、保護された領域を作成する。RFC 1945を引用すると"これらの領域は、サーバ上の保護されたリソースを、それぞれが認証スキーム and/or 認証データベースによって保護された空間に割り当てられるようにする。"クライアントは、それぞれのHTTPリクエストと共にどの認証クレデンシャルを送信するかを決定するために、サーバのルートURLを使用する。これらのクレデンシャルは、これらを作成した認証領域の名前にタグ付けされている。認証段階の間は、サーバは、認証にどのクレデンシャルを使用するかを決定するのに、$r->auth_name()で得られる現在の認証領域を使用する。
リクエストのために要求される認証のタイプを取得、または設定する(ディレクトリ毎の設定ディレクティブ AuthType ):
$auth_type = $r->auth_type();
$auth_type = $r->auth_type($new_auth_type);
- obj: $r(Apache2::RequestRec オブジェクト)
- 現在のリクエスト
- opt arg1: $new_auth_type(string)
- $new_auth_typeを指定する場合、新しいAuthType値が設定される
- ret: $(integer)
- 現在のAuthType値
- since: 2.0.00
通常AuthTypeには、ベーシック認証スキーム(RFC 1945, '''Hypertext Transfer Protocol -- HTTP/1.0'''で定義)を使用するためのBasicがセットされるが、独自に作成した認証タイプをセットすることもできる。
リクエストヘッダからパスワードを取得
my ($rc, $passwd) = $r->get_basic_auth_pw();
- obj: $r(Apache2::RequestRec オブジェクト)
- 現在のリクエスト
- ret1: $rc(Apache2::Const constant)
- $passwordがセットされていたら(かつ、$r->userにおいて正しい値が保障される場合)Apache2::Const::OKを返す。それ以外の場合はエラーコードか、あるいは以下のコードを返す。
- 明確に拒否された場合は Apache2::Const::HTTP_INTERNAL_SERVER_ERROR、認証がまったく使用されていない場合は Apache2::Const::HTTP_UNAUTHORIZED、認証は必要だが、それがBasicでない(おそらくこの場合呼び出しは拒否される)場合は Apache2::Const::DECLINED。
- ret2: $ret(string)
- ヘッダにセットされたパスワード(デコード済み)
- since: 2.0.00
AuthTypeが設定されていなければ、まず最初にBasicがセットされる。
最終更新:2010年08月09日 19:19