kengo92iの日記

プログラミングとかやったことの記録を書いていきます。

Webページにアクセス制限を付ける方法

今回は、アクセス制限付きのページを作る方法を調べたのでまとめておきます。アクセス制限付きのページはIDとPasswordがなければ閲覧できないページを作ると言う感じです。不特定多数に公開しないページなどを作る場合は必須です。


例えば、http: //www.secret.jp/secret/index.html に接続しようとすると、パスワード認証を求められるページを作成していきます。まず、アクセス制限をするためのディレクトリ「 secret 」を作ります。

$mkdir secret

このsecret以下のディレクトリにはアクセス制限がかかります。この中にアクセス制限をかけたいページを作成していきます。作成した「 secret 」ディレクトリの中に適当なページを1つ作っておきます。普通にindex.htmlとかにしておきます。

<html>
<meta charset="utf-8">
<head>
<title>秘密のページ</title>
</head>
<body>
<h1>秘密のページです.</h1>
<p>ここは、秘密のページです. アクセス制限がかかっています.</p>
</body>
</html>

そして、アクセス制限を設定するために必要なファイル「 .htaccess 」、「 .htpasswd 」を作成します。まず、最初に「 .htaccess 」を作成します。(この2つは隠しファイルになります)

$vim .htaccess

ターミナルなどで、上記の名前で作成します。内容は以下を参考にして下さい。

AuthUserFile /home/secret/ .htpasswd
AuthGroupFile /dev/null
AuthName "SecretArea"
AuthType Basic

require valid-user

<Files ~ "^.(htpasswd|htaccess)$">
    deny from all
</Files>

一応、ファイルの説明を書いときます。

AuthUserFile 
	(.htpasswdがある場所のパス) .htpasswd
AuthGroupFile 
	BASIC認証では必要ないので、/dev/nullにしておく
AuthName 
	パスワード認証画面で表示される英数字を入れる
AuthType 
	Basic認証なので、"Basic"にしておく
require 
	認証するユーザーを記載する。
	"valid-user"と書くとAuthUserFileで指定したファイルを参照する
	今回は、.htpasswdに書くので、"valid-user"で問題なし。

続いて、「 .htpasswd 」を作成します。

$vim .htpasswd

以下は見本です。

user1:SwnHmMvcCs/UQ
user2:k62AMIYw2uAS6

当然、パスワードは暗号化します。暗号化の方法は以下のページでIDとパスワードを打ち込んで、出力結果をペーストするのが楽だと思います。

htpasswdファイル生成(作成)

ルフトツールズさん、便利なWebページをありがとうございます。

最終的にディレクトリの中身は以下のようになっていれば大丈夫です。

secret
 ├── .htaccess
 ├── .htpasswd
 └── index.html

ここまで来れば、今回作成した「 secret 」ディレクトリをそのまま公開サーバーにあげれば、アクセスしたときに認証を求められます。

f:id:kengo92i:20140917185717j:plain

IDとパスワードを入力して、合っていればページが表示されます。

f:id:kengo92i:20140917185750j:plain