ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

Apache HTTP ServerでBasic認証を設定する(Windows)

今回は、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」を指定しなければ同じ手順で登録できます。

f:id:mr_star:20210826210458p:plain
Basic認証設定画面①

上記コマンドが成功すると実際にファイルが作成されていることが確認できます。

f:id:mr_star:20210826211224p:plain
Basic認証設定画面②

これで準備OKです。Apacheを再起動して、設定内容を反映しましょう。

Basic認証の動作確認

それでは、ブラウザでアクセスしてみて動作確認をしてみましょう。

設定したコンテンツにアクセスすると、以下のようなダイアログが表示されると思います。
ここに、先ほど登録したユーザー名とパスワードを入力することになります。

f:id:mr_star:20210826211522p:plain
ブラウザでBasic認証の動作確認①

入力情報が正しければ、コンテンツに正常にアクセスすることができます。

おわりに

いかがでしたでしょうか。今回は、Apacheのパスワード認証の一つであるBasic認証を設定してみました。
意外と簡単でしたが、実際にはBasic認証を設定することはなくて、安全なDigest認証を使用したり、アプリケーションで独自に認証をしたりすることがほどんどだと思います。

冒頭でもお話しましたが、あくまで簡易的な認証方式であることを認識しておくことが重要だと思います。
最後までお読みいただきありがとうございました。今回はこの辺で失礼いたします。