Tech Blog

ApacheでBasic認証を設定する

2021-02-07

前提

  • CentOS7
  • Apache2.4

ベーシック認証を設定するには、.passwdsというファイルにログイン情報(ユーザー名・パスワード)を設定します。 また、ファイルへの書き込みはhtpasswdというコマンドで行います。

必要な手順は、httpd.confファイルの編集と、.htpasswdファイルの作成です。

Apacheの設定ファイル(httpd.conf)の編集

例えば、/var/www/htmlにドキュメントルートが設定されている場合、

http://ホスト名/basicのURLにアクセスした場合にベーシック認証を設定するには、

httpd.confに以下のような設定を追記します。

vim /etc/httpd/conf/httpd.conf
<Directory /var/www/html/basic>
    AuthType Basic
    AuthName "Restricted Pages"
    AuthUserFile "/etc/httpd/.passwds"
    Require user junpeko takuya
</Directory>

AuthTypeディレクティブにはBasicと設定します。

Requireディレクティブにユーザー名を指定していますが、

また、valid-userと設定すると、登録ユーザーすべてにアクセスを許可できます。

設定を反映させるため再起動しましょう。

apachectl restart

パスワードファイル.passwdsの作成・追加

AuthUserFileに設定したパスに.passwdsファイルを作成します。

htpasswd -c /etc/httpd/.passwds junpeko

-cは新規ファイル作成のオプションのため、 追加する場合は-cオプションは不要です。

htpasswd /etc/httpd/.passwds takuya

確認

http://ホスト名/basicのURLにアクセスすると、

ユーザー名とパスワードを入力する認証ダイアログが表示されます。

ユーザー名・パスワードを正しく入力するとログインできます。

ログアウトについて

ログアウトという機能はベーシック認証にはありません。

ブラウザのログイン情報を消去するか、ブラウザを終了させると、

再アクセスした際に認証ダイアログが再表示されます。

グループファイルでの設定例

先程はRequireディレクティブに userを指定していましたが、

groupを指定することも可能です。

<Directory /var/www/html/basic>
    AuthType Basic
    AuthName "Restricted Pages"
    AuthUserFile "/etc/httpd/.passwds"
    AuthGroupFile "/etc/httpd/.groups"
    Require group admin
</Directory>

Require user junpeko takuyaを削除し、

Require group admin

AuthGroupFile "/etc/httpd/.groups"を追加しています。

また、AuthGroupFileで指定したパスにファイルを.groupという名前でファイルを作成します。

vim /etc/httpd/.groups
admin: junpeko takuya