今回は、Apache HTTP ServerでBasic認証を設定したいと思います。
この記事の内容は、WindowsのOSにインストールしたApacheの設定に関するものになりますのでその点はご了承いただければと思います。
Basic認証とは?
実際にBasic認証の設定作業を行う前に、まずはBasic認証とは何かを簡単に説明したいと思います。
Basic認証とは、Apacheで設定することができるパスワード認証の1つです。
他には、Digest認証と呼ばれるものもあります。
パスワード認証なので、その名のとおりユーザーとパスワードをあらかじめ設定しておいて、保護しているリソースに対してリクエストがあった場合にユーザーとパスワードを確認し、問題ない場合のみコンテンツを見せるといったことができます。
ただし、このBasic認証はユーザー名とパスワードが平文(暗号化なし)でサーバー(Apache)に送信されるので、悪意のあるユーザーに通信を傍受されるとパスワードが漏洩する危険があることを認識しておく必要があります。
Basic認証を設定する
それでは、Basic認証を簡単におさらいしたところで実際の設定作業に移りたいと思います。
今回は、DocumentRoot配下にsampleディレクトリを作成し、その中にhello.txtファイルを格納してある前提でお話を進めていきます。
Basic認証を設定するURLやディレクトリは、もちろん任意に決めることができますが、今回はsampleディレクトリ配下をBasic認証の設定対象として進めたいと思います。
それでは、Apacheのメインのサーバー設定ファイルであるhttpd.confに以下のような記述を追加します。
<Location "/sample"> AuthType Basic AuthName "test basic auth" AuthUserFile "C:/Apache24/password/passwords" Require valid-user </Location>
設定している項目に関して簡単に説明します。
「AuthType」に"Basic"と設定することで、Basic認証となります。
「AuthName」は、このBasic認証のニックネームになります。一度認証OKとなったユーザーが再度認証が必要なコンテンツにアクセスした場合に、認証不要とするように制御するために使うものです。
「AuthUserFile」は、ユーザーとパスワードを設定するファイルを指定します。これは後程説明します。
「Require」は、アクセスを許可するユーザーを指定します。今回のvalid-userの場合は、「AuthUserFile」に登録しているすべてのユーザーを指します。
設定ファイルの修正は以上になります。次は、先ほど保留した「AuthUserFIle」について説明します。
「AuthUserFile」の作成方法
上記で、httpd.confに「AuthUserFIle」を設定しました。これは、ユーザーとパスワード情報を設定するファイルですが手動で作成するわけではなく、Apacheで用意しているコマンドを使用して作成します。
コマンドはApacheのインストールディレクトリ配下の「bin」にある「htpasswd.exe」です。
とりあえず、初めてファイルを作成する場合は以下のようにコマンドを実行します。
htpasswd -c パスワードファイルパス ユーザー名
以下が実際の実行画面になります。
コマンドを実行すると、パスワードを求められますので入力します。もう一度パスワードの確認を求められるますので、再度入力すればOKです。
ちなみに、ユーザーを追加する場合はオプションの「-c」を指定しなければ同じ手順で登録できます。
上記コマンドが成功すると実際にファイルが作成されていることが確認できます。
これで準備OKです。Apacheを再起動して、設定内容を反映しましょう。
Basic認証の動作確認
それでは、ブラウザでアクセスしてみて動作確認をしてみましょう。
設定したコンテンツにアクセスすると、以下のようなダイアログが表示されると思います。
ここに、先ほど登録したユーザー名とパスワードを入力することになります。
入力情報が正しければ、コンテンツに正常にアクセスすることができます。