Apache | アクセス権限 | グループ単位で認証
Requireを使用してアクセスできるユーザーを設定するとき、ユーザーが少ない場合は列挙してもよいが、あらかじめユーザーをグループに登録しておき、グループ単位でアクセスを許可することもできる。グループに含まれるユーザーは、認証を通過すればアクセスが許可される。
まず、グループ名とグループに属するユーザーを記述するグループファイルを作成する。
グループファイルの作成
パスワードファイルの場合はApacheにhtpasswd.exeというツールが用意されているが、グループファイルにはそのようなツールは用意されていない。グループファイルは単純なテキストファイルなので、テキストエディタで作成する。
グループ名1: ユーザー名1 ユーザー名2 ユーザー名3 ...
グループ名2: ユーザー名1 ユーザー名4 ...
グループファイルに登録するグループごとに1行で記述する。グループ名の後にコロン(:)で区切り、そのグループに登録するユーザー名を記述する。ユーザー名は空白で区切って続けて記述する。
ここではグループファイル名をC:\apache\passwd\ groupと指定する。今回作成するグループファイルは次のとおりである。
group
admin: devkuma kimkc
user: araikuma
other: happykuma
AuthGroupFileを指定する
次に、httpd.confファイルでAuthGroupFileを使用してグループファイル名を指定する。
AuthGroupFile グループファイル
先ほど作成したグループファイルの指定は、次のようにすればよい。
AuthGroupFile "C:/apache/passwd/group"
httpd.confへの記述方法
グループファイルはあくまでユーザーをまとめて管理するためのものであり、認証はユーザー単位で行われる。そのため、AuthGroupFileはユーザー認証のための設定の一つとして記述される。
<Directory "${SRVROOT}/htdocs/admin">
AuthType Basic
AuthName "사용자명과 비밀번호를 입력하세요."
AuthUserFile "C:/apache/passwd/passfile"
AuthGroupFile "C:/apache/passwd/group"
Require group admin user
</Directory>
Requireのオプションにgroupを指定し、続けてアクセスを許可するグループを空白で区切って記述する。
ユーザーの場合は、すべてのユーザーを許可するvalid-userと記述できたが、グループの場合はそうではないため、一つずつ記述する必要がある。
では、グループを使用した認証を試してみる。認証が設定されているディレクトリに含まれるhttp://localhost/admin/admin.htmlへブラウザでアクセスする。

グループ名によって認証を設定した場合でも、ブラウザに表示される認証ダイアログは同じである。権限が設定されているグループに含まれるユーザー名で認証を通過すると、そのページが表示される。
