Basic認証によるアクセス制限

Basic認証を使ってアクセス制限がかかっているホームページを作ります。

アクセス可能ユーザを作る

 例えば「tarou」というアカウントでログインをさせたいのであれば、ubuntuのコンソールから次のコマンドを入力してください。
 ubuntuのユーザと同じである必要はありません。

$ > sudo htpasswd -c /var/htpasswd tarou
管理者のパスワードを入力してください
tarou のパスワードを入力してください(2回)

 登録したアカウントの確認は、次のコマンドを入力してください。

$ > cat /var/htpasswd
tarou:********************************************

 このように表示されていれば認証ユーザ[tarou]のアカウントができています。

 ユーザを追加したい場合は、[-c]オプションを外して次のコマンドを入力してください。
 

$ > sudo htpasswd /var/htpasswd hanako
管理者のパスワードを入力してください
hanako のパスワードを入力してください(2回)

 ユーザを削除したい場合は、次のコマンドを実行してください。

$ > sudo htpasswd -d /var/htpasswd hanako

セキュリティフォルダの作成

 今回はhtmlフォルダ直下に[secure]という名前のフォルダを作成し、Basic認証をかけます。
 ubuntuのコンソールから次のコマンドを入力してフォルダを作ります。

$ > mkdir /var/www/html/secure
$ > chmod 755 /var/www/html/secure

 secureフォルダの下には、とりあえず次のようなHTMLを置き、パーミッションを755に変更しました。

 ファイル名 index.html パーミッション 755
 <html> 
   <body><h1>this is secure page!</h1></body>
 </html>

apacheでBasic認証の設定を行う

 apacheの設定ファイルを開き、どのフォルダにBasic認証をかけるのか設定します。
 設定ファイルを開くには、次のコマンドを入力してください。

$ > sudo nano /etc/apache2/apach2.conf

 nanoエディターが開くので、「<Directory>」という設定が書かれている場所付近に次の設定分を追加してください。

<Directory /var/www/html/secure>
  AuthType basic
  AuthName “private area”
  AuthBasicProvider file
  AuthUserFile /var/htpasswd
  Require valid-user
</Directory>

 この設定によって
   「/var/www/html/secure」フォルダにBasic認証をかける
   「/var/htpasswd」にログイン可能なユーザが記載されている
に変わります。
 追記したら、Ctrl+s で保存してエディターを終了させてください。

 設定ファイルを変更した後は、変更を有効にするために次のコマンドでapacheを再起動してください。Basic認証が使えるようになります。

 sudo service apache2 restart

Basic認証を確認する

 ubuntuPCのブラウザから
  http://127.0.0.1/secure/
にアクセスすると、パスワードが要求されるようになります。
 ここに先ほど登録したユーザ(tarouかhanako)とそれぞれのパスワードを指定すると、
  this is secure page
と表示されました。
 secureフォルダ以下に置かれたHTMLは、登録したユーザしか見ることができなくなります。

apacheのログを確認

 Basic認証フォルダに対するアクセスログがどうなっているか確認したところ

  ログインが成功した場合 
   リモートユーザにログインユーザ名が表示され、ステータスコードが200
  ログインが失敗した場合
   リモートユーザに失敗したユーザ名が表示され、ステータスコードが401

になっていました。