Apache ベーシック認証のグループ機能、複数パスワードファイルの使用

July 6, 2025 6:40

注意

グループと複数パスワードファイルの使用は概念としては全く別のもの。(併用可)

  • グループ:複数のユーザーをまとめたもの
    例) グループ1にはユーザーAとユーザーB
    グループ2にはユーザーAとユーザーC
    ファイル・フォルダの権限にグループを使用できる(ユーザー単位で指定するより手間が省ける)

  • 複数パスワードファイル:ユーザーIDとパスワードの組み合わせを複数のファイル(所属会社別にファイルを分けるなど)で構成できる

グループの使用

1. グループファイルの作成

  • 作成場所、ファイル名は任意(外部公開していないディレクトリが望ましい)
  • apache ユーザーが read できる権限を設定
# /datadrive/auth/group
group1 user1 user2
group2 user1 user3

2. グループを使ったBasic認証の設定

# /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
    AuthType Basic
    AuthName "auth"
    AuthUserFile /etc/httpd/htpasswd
    AuthGroupFile /datadrive/auth/group
    Require group1
</Directory>

複数パスワードファイルの使用

会社単位などでベーシック認証のパスワードファイルを分けたい場合、AuthBasicProvider を使用することで複数のパスワードファイルを使用できる。

# /etc/httpd/conf/httpd.conf
<AuthnProviderAlias file file1>
    AuthUserFile "/www/conf/passwords1"
</AuthnProviderAlias>

<AuthnProviderAlias file file2>   
    AuthUserFile "/www/conf/passwords2"
</AuthnProviderAlias>

<Directory "/var/www/html">
    AuthType Basic
    AuthName "auth"
    AuthBasicProvider file1 file2
    Require valid-user
</Directory>

グループ機能と組み合わせることも可能

# /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
    AuthType Basic
    AuthName "auth"
    AuthBasicProvider file1 file2
    AuthGroupFile /datadrive/auth/group
    Require group1
</Directory>

参考

グループにユーザーを追加しグループ単位でアクセス制限を行う
.htpasswd作成(basic認証設定)大量パスワード版
Is it possible to have two password files in Apache2?