ベーシック認証 TOP画面

現在製作中のWordPressによるWebアプリ、開発中につ、サイトTOPからベーシック認証をかけた。
その時の作業手順。

※KUSANAGI環境で行っています。WebサーバーはNginxです。

まずは、ベーシック認証とは?

BASIC認証とは、
Webコンテンツの送受信などに用いられるプロトコル(通信規約)
HTTP(Hypertext Transfer Protocol)の利用者認証の方式の一つで、最も単純で基本的なもの。

WebサーバがWebブラウザなどからアクセスの制限された領域への送信要求(HTTPリクエスト)を受信すると、
エラーコード401(Authorization Required)を返信し、利用者のID(ユーザ名)とパスワードの送信を要求する。
ブラウザは利用者に認証情報の入力を求め、これをWebサーバに送り、サーバ側に保存された情報と照合してアクセスを許諾あるいは拒否する。
ブラウザから送信される認証情報は「ユーザ名:パスワード」という形式で「:」(コロン)で区切って並べ、
これをBASE64でエンコーディングした文字列をHTTPヘッダのAuthorizationフィールドに記載する。
最も簡易で基本的な方式であり、古くから用いられている方式であるためほとんどのWebサーバやWebクライアントが対応しているが、認証情報が平文(クリアテキスト)のまま送られ暗号化やハッシュ化などはされないため、通信途上で第三者に覗き見られる危険性がある。
現在では秘密の情報をそのまま流さないDigest認証などの方式を用いたり、SSL/TLSによる通信経路の暗号化を併用するといった手法が用いられることが多い。

てことらしい。

誰かが書いていてくださった、作業手順に乗っ取りやってみた。
僕は、Nginx使ったので、Nginxのベーシック認証になる。

1. .htpasswdの作成

まず、Basic認証に使用するID・パスワードを格納するファイル「.htpasswd」を作成。
htpasswdコマンドを実行し、Basic認証で使用するパスワードを2回入力する。
.htpasswdを作成

# htpasswd -cs [ファイル名] [ユーザー名]
$ htpasswd -cs .htpasswd kusanagi
New password: [パスワード]
Re-type new password: [パスワード]
Adding password for user kusanagi

「-c」オプションを付けるとパスワードファイルの新規作成(存在する場合は上書き)し、「-s」オプションを付けるとパスワードをSHAでハッシュ化して保存。

2. .htpasswdの配置とパーミッションの設定

.htpasswdファイルを作成したら、/home/kusanagiに配置。

$ mv .htpasswd /home/kusanagi/

また、.htpasswdファイルの所有者を「kusanagi」、グループを「www」に設定し、パーミッションは644に設定(外部からは読み取りのみを許可)。

所有者とパーミッションの設定
$ chown kusanagi:www .htpasswd
$ chmod 644 .htpasswd

3. 設定ファイルの編集

.htpasswdファイルを配置したら、nginxの設定ファイルを編集します。

/etc/nginx/conf.dにある「[プロファイル名]_http.conf」を開く。

「wp-login.php」があるlocationブロック内の「allow 0.0.0.0/0;」をコメントアウトします。
※「0.0.0.0/0」はすべてのIPアドレスとマッチします。
nginxの設定ファイルの一部

location / (ルート部分)の記述 { }の中に下記を記述。

location / {
try_files $uri $uri/ /index.php?$args;
#サイト全体にベーシック認証
satisfy any;
#allow 0.0.0.0/0;
#localhost許可 ローカル・ループバック・アドレス(127.0.0.1)
allow 127.0.0.1;
#その他IPアドレス拒否
deny all;
#ベーシック認証をかける
auth_basic "basic authentication";
}

設定ファイルを保存。
サイトがSSLに対応している場合には、[プロファイル名]_ssl.confも同様に編集。
nginxを再起動します。

$(sudo) systemctl restart nginx

これで対象のURLをブラウザで叩くと、TOPページ (index.php)はベーシック認証される。

 

【2017年11月30日 補足】

複数のベーシック認証をつける際には、

# htpasswd /home/kusanagi/.htpasswd {ユーザー名}

すると、パスワードを聞かれるので2回入力すれば追加完了!!

Leave a Reply

Your email address will not be published. Required fields are marked *