3-2 : Basic認証を設定する

2019/05/29

概要

Basic認証とはHTTPで利用できる簡単な認証システムです。
例えば、サイトを公開する前に、管理者がサイトのチェックを行いたい場合などにBasic認証付きで公開し、認証をクリアした人だけがサイトを確認できるようにするために使ったりします。
全世界に公開する前に、他の管理者にチェックをしてもらうことを想定してBasic認証を設定してみます。

完成イメージ

フォルダ階層

事前準備

今回の手順はすべて、ローカルではなくサーバー上で行います。
サーバーにコンソールでログインできるように、AWSサイトにログインして、EC2からコーポレートサイトを設置しているサーバーのIPv4 パブリック IPを確認しておきます。

全体の手順

Basic認証の設定の流れは以下の通りです。

  1. .htaccessを作成する
  2. htpasswdを作成する
  3. 確認
  4. basic認証の解除

.htaccessを作成する

.htaccessファイルを作成して、Basic認証の設定を記述します。

コンソールログイン

コンソールを使ってSSHでサーバにログインします。
console

$ ssh サーバーIP
Last login: Wed Apr 17 12:43:32 2019 from fs76eee6f9.tkyc005.ap.nuro.jp

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
2 package(s) needed for security, out of 12 available
Run "sudo yum update" to apply all updates.

ログインしたら、var/www/htmlに移動します。
console

$ cd /var/www/html

. htaccess作成

.htaccessでは認証に必要な情報の、AuthType、AuthName、AuthUserFile、Requireを設定していきます。
AuthTypeには「Basic(ベーシック認証)」と「Digest(ダイジェスト認証)」があるのですが、今回はBasicを指定します。
AuthNameはベーシック認証の名前を指定します。
AuthUserFileはベーシック認証のユーザーとパスワードリスト(.htpasswd)のあるフォルダを指定します。
今回は/var/www/html/直下に.htpasswdを作成する予定なので、/var/www/html/.htpasswdとします。
Requireはvalid-userを指定します。valid-userはユーザー名とパスワードが正しければみんな認証OKとするという意味です。 「valid-user」ではなく、「user ユーザー名」とすることで、.htpasswd内のユーザーリストの特定のユーザーを指定することも可能です。
記述サンプル

AuthType Basic
AuthName TestSite
AuthUserFile /var/www/html/.htpasswd
Require valid-user

上記情報が準備できたら、.htaccessを作成します。
console

$ vi .htaccess

新規で.htaccessが開いたら、「i」でインサートモードにします。
インサートモードにしたら、準備した情報を記述します。



入力が終わったら、:wqreturnキーでインサートモードを終了して保存して.htaccessを閉じます。
もし、入力を保存せずに終了する場合、:q! returnキーを終了できます。

. htpasswdを作成

ベーシック認証用のユーザーとパスワードリストを作成します。
/var/www/htmlにいることを確認してhtpasswdを実行します。
今回はtestuser1というユーザーを作成します。
すると、passwordを入力するように言われます。
入力し、returnすると、再度passwordを入力するように言われるので入力してreturnします。
console

$ htpasswd -c .htpasswd testuser1
New password:
Re-type new password:
Adding password for user testuser1

作成が成功すると、Adding password for user testuser1というメッセージが表示されます。

確認する

https://取得したドメインにアクセスしてみます。

すると、認証が設定されました。

設定したユーザー(testuser1)でログインしてみます。
サイトが表示できたら、ベーシック認証の完成です。

ベーシック認証を解除する

解除するには、.htaccessを削除すればいいのですが、再度ベーシック認証をかけなければいけなくなった場合、また最初から設定するのは手間がかかるのでベーシック認証についての記述をコメントアウトします。
console

$ vi .htaccess

「i」でインサートモードにします。
4行すべての頭に#をつければコメントアウトできます。

編集できたら、:wq returnキーでインサートモードを終了して保存して.htaccessを閉じます。

認証が取れていることを確認します。
一回ログインしているとセッションにログイン情報が書き込まれているので認証を聞かれずログインできてしまうので、キャッシュをクリアしてアクセスしてみてください。
それでもベーシック認証のアラートが表示されなければベーシック認証は解除されているので成功です。
もう一度ベーシック認証をかけることになった場合も、.htaccessのコメントアウトをコメントインし直せばすぐにベーシック認証をかけることができます。