ページごとにパスワードをかけられるBASIC認証の作り方

簡単ログインページの作り方

WEBサイト全体や特定のページにパスワードをかけて、公開先を限定したい。

だけど、ログインページを作るのはハードルが高そうだし、どこの誰が書いたコードかわからないコードをコピペして作るのはなんだか不安。

そんなときに使えるのがBASIC認証という仕組み。

もともとHTTP通信に備わった機能を使って作る認証の仕組み。

お作法に沿って設定ファイル(.htaccess)とパスワード管理ファイル(.htpasswd)作って、パスワードを掛けたいページのディレクトリに置くだけで実装できてしまう手軽さが魅力。

手軽なだけで、セキュリティはどうなの?

となりますが、パスワードもハッシュ化したものを設置しますので、セキュリティ面も安心の仕組みとなっています。

こんな感じのログインページが完成します。

ID:user
パスワード:PS5555

それでは早速作り方を見ていきましょう。

スポンサーリンク

仕組み

パスワードはディレクトリ単位で設定します。

特定のページにパスワードを掛ける場合は、そのページだけが入ったディレクトリを用意し、.htaccessファイルと.htpasswdファイルを格納します。

ディレクトリの中の完成形は↓こんなイメージです。

このディレクトリでは動画ページにパスワードを掛けているため、「movie」というディレクトリの中にmovie.htmlというページだけが入っている状態になります。

作り方

それでは早速作り方を見ていきましょう。

仕組みのところで説明したようにパスワードを掛けるページのhtmlファイルと.htaccessファイル、.htpasswdファイルを用意して同じディレクトリに入れます。

.htaccessファイルを用意する

それでは設定ファイルの.htaccessファイルの中身を書いていきましょう。

中身はこんな感じになります。

AuthType Basic
AuthName "任意の名称"
AuthUserFile /パスワードをかけるディレクトリ名/.htpasswd
Require valid-user

AuthType

BASIC認証の場合はBasicとしますので、このままコピペしてください。

AuthName

AuthNameは任意の名称をつけてOKですが、日本語だと文字化けする可能性があるので英数字で記述するようにしましょう。

AuthUserFile

AuthUserFileには.htpasswdがある場所を記述します。

Require

Requireでは全てのユーザにパスワードを求めるようにvalid-userを書いておきます。

.htpasswdファイルを用意する

最後に.htpasswdファイルを作成します。

.htpasswdの中にはユーザーIDとパスワードを書きます。

ユーザーIDは用意したIDをそのまま書けばOKですが、パスワードはハッシュ化したものを記述する必要があります。

例えば「PS5555」というパスワードを設定したい場合に、このまま.htpasswdファイルに書いてもうまくいきません。

ネットで検索すると無料変換できるサイトがあります。

今回はLUFT TOOLSさんのツールを使って変換してみましょう。

IDを「user」、パスワードを「PS5555」で変換すると「user:kn6d12FBrgv1s」が出力されました。

これを.htpasswdのファイルにコピペして保存して完成です。

ちなみにコロンを挟んで「ID:パスワード」の構成になっています。

複数のパスワードやIDを使用したい場合には、.htpasswdファイルに改行して記述しておくことで実現可能です。

こんな感じです。

user:kn6d12FBrgv1s
user2:NXbpvki2QZXvM

サーバーに設置する

最後にサーバーにアップしたら完成です。

アクセスしてちゃんとログインできるか確認してみましょう。

↓こんな感じでうまくいきましたか?

ID:user
パスワード:PS5555

でログインできます。

コメント

タイトルとURLをコピーしました