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へブラウザでアクセスする。

グループを使用した認証

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

グループを使用した認証