Apache HTTP Server/Tips/Basic Authentication
Basic 認証を設定し、特定の URL 、ディレクトリ、ファイルへのアクセスに対してユーザ名、パスワードを要求し、それが正当な場合のみ閲覧を許可します。
閲覧を許可するユーザ特定するため、パスワード ファイルを作成します。ファイルは Apache に含まれる htpasswd というプログラムを使用します。コマンドプロンプトを開き、 ${APACHE2}\bin ディレクトリに移動し、次のように実行します。
第 1 引数の -c は新規にパスワード ファイルを作成することを表します。第 2 引数の C:\usr\Apache2\passwd\foo.passwd は作成するパスワード ファイルのパスを表します。第 3 引数の foo は作成するユーザ名を表します。
この後、 2 回パスワードを要求されます。
こうしてパスワード ファイルを作成します。既に存在するパスワード ファイルにユーザを追加する場合は第 1 引数の -c を省略してください。
パスワード ファイルの中身は次のようになっています。
先ほど追加したユーザ foo とパスワードが 1 行で記述されています。パスワードが意味不明な文字列になっていますが、これは先ほど入力したパスワードを MD5 ハッシュ化したものです。
作成したパスワード ファイルはこの後どこに移動しても構いませんが、通常、 Web からアクセスできる場所には置きません。もし誰かに入手されてしまい、頑張って解読されたら、制限されたリソースにアクセスされてしまう可能性があるからです。
作成したパスワード ファイルで保護するリソースを設定します。これは通常、 <Location> 、 <Directory> ディレクティブの範囲内に次のように記述します。
これで、 http://servername/foo/special 以下のリソースの要求に対して Basic 認証を行い、ユーザ foo 、 bar 、 boo の場合のみ許可します。
このように指定すると、パスワード ファイルに記述されている全てのユーザに対してアクセスを許可します。
このように指定すると、グループ ファイルに記述されているグループに対してアクセスを許可します。この場合はグループ foobar に対してアクセスを許可します。
パスワード ファイルの作成
閲覧を許可するユーザ特定するため、パスワード ファイルを作成します。ファイルは Apache に含まれる htpasswd というプログラムを使用します。コマンドプロンプトを開き、 ${APACHE2}\bin ディレクトリに移動し、次のように実行します。
htpasswd -c C:\usr\Apache2\passwd\foo.passwd foo
第 1 引数の -c は新規にパスワード ファイルを作成することを表します。第 2 引数の C:\usr\Apache2\passwd\foo.passwd は作成するパスワード ファイルのパスを表します。第 3 引数の foo は作成するユーザ名を表します。
この後、 2 回パスワードを要求されます。
New password: Re-type new password: Adding password for user foo
こうしてパスワード ファイルを作成します。既に存在するパスワード ファイルにユーザを追加する場合は第 1 引数の -c を省略してください。
パスワード ファイルの中身は次のようになっています。
foo:$apr1$A23.....$uxG/YLJWra.PNsIj1nwQY0
先ほど追加したユーザ foo とパスワードが 1 行で記述されています。パスワードが意味不明な文字列になっていますが、これは先ほど入力したパスワードを MD5 ハッシュ化したものです。
作成したパスワード ファイルはこの後どこに移動しても構いませんが、通常、 Web からアクセスできる場所には置きません。もし誰かに入手されてしまい、頑張って解読されたら、制限されたリソースにアクセスされてしまう可能性があるからです。
認証を設定
作成したパスワード ファイルで保護するリソースを設定します。これは通常、 <Location> 、 <Directory> ディレクティブの範囲内に次のように記述します。
<Location /foo/special> AuthType Basic AuthName "foo special zone" AuthUserFile "C:\usr\Apache2\passwd\foo.passwd" Require user foo bar boo </Location>
これで、 http://servername/foo/special 以下のリソースの要求に対して Basic 認証を行い、ユーザ foo 、 bar 、 boo の場合のみ許可します。
- AuthType
- ディレクティブは認証の種類を表します。この場合は Basic 認証を表します。 Digest を指定するとダイジェスト認証を行います。
- AuthName
- ディレクティブは認証に使用するレルムを表します。クライアントに表示されるパスワード ダイアログに表示される文字列と認識して構わないと思います。
- AuthUserFile
- ディレクティブは認証に使用するパスワード ファイルのパスを表します。
- Require
- ディレクティブはアクセスを許可するユーザを表します。ユーザ名を列挙することで、複数のユーザに対して許可することができます。
色々なユーザの指定の仕方
Require valid-user
このように指定すると、パスワード ファイルに記述されている全てのユーザに対してアクセスを許可します。
AuthUserFile "C:\usr\Apache2\passwd\foo.passwd" AuthGroupFile "C:\usr\Apache2\passwd\foo.group" Require group foobar
このように指定すると、グループ ファイルに記述されているグループに対してアクセスを許可します。この場合はグループ foobar に対してアクセスを許可します。
2005年11月17日(木) 18:43:46 Modified by uguuxp