プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
任意のディレクトリにBasic認証を設定する
結論から書けば

1.パスワードファイルを作成
 以下のコマンドを実行してパスワードファイルを作成
 ※途中でパスワード入力が求められる
htpasswd -c パスワードファイル名 ユーザ名

2.「.htaccess」ファイルを設置
 以下の内容を記述した.htaccessファイルをBasic認証を設定したいディレクトリに配置
AuthType    Basic
AuthName    "認証ダイアログに表示するメッセージ"
AuthUserFile    「1.」で作成したパスワードファイル
require        valid-user

で設定できます。

それでは順番に見ていきましょう。

Pleskを使っているのでコントロールパネルから設定しても良いのですが、コンパネ開くの面倒だし、
コマンドラインベースでBasic認証を設定したいな~というのがきっかけです。

ほんで、どーやんの(--?

ふむふむ(--)

まずは

htpasswd -c パスワードファイル名 ユーザ名

を実行してパスワードファイルを作ります。

今回は

htpasswd -c test.pwd piyo

とやって、ユーザ「piyo」を定義したパスワードファイル「test.pwd」を作ることにしました。
コマンドを実行すると

New password:

とか表示されて、パスワードの入力が求められます。
パスワードは「piyopiyo」にしました。ぽちぽち。

パスワードを入力してエンターキーを押すと

Re-type new password:

とか表示されて、パスワードの再入力が求められます。
先程と同じパスワード「piyopiyo」を入力してエンターキーを押します。

パスワードを再入力すると

Adding password for user piyo

とか表示されて、パスワードファイルが作成されます。
「piyo」のところは、あなたが指定したユーザ名に読み替えてください。

作成した「test.pwd」は、例えば以下のような内容になっています。

piyo:t.teOMQ5BXivg

ユーザ名と暗号化されたパスワードが「:」区切りで並んでいますね。
今回はファイルを作成したばかりなので1ユーザしか定義されていませんが、
複数ユーザ定義されている場合は1行1ユーザで複数行になっています。

このようにして作成されたパスワードファイルを適当なところに置きます。
どこに置いても良いっちゃー良いのですが、中身はパスワードです。
可能であれば、公開されている場所には置かないようにしましょう。

これでパスワードファイルの準備はバッチリです。
今回はLinuxを例に説明しましたが、Windowsの場合も基本は一緒です。
Apacheが入っていれば、多分どこかに「htpasswd.exe」があるので、
そいつを使ってコマンドプロンプトから作成してください。

次に「.htaccess」ファイルを用意します。
例えば以下のような内容で「.htaccess」ファイルを作成します。

AuthType    Basic
AuthName    "basic auth"
AuthUserFile    /hoge/test.pwd
require        valid-user

それぞれの設定値について説明していきますね。

AuthType    Basic

は決まり文句みたいなものだと思ってください。
「これはBasic認証ですよ~」という意味のことが書いてあります。
似たようなものでダイジェスト認証というのがあるのですが、
ダイジェスト認証の場合は「Basic」ではなく「Digest」になります。

AuthName    "basic auth"

はBasic認証のダイアログ内に表示されるメッセージです。
好きな文字列で構いませんが、日本語は使わない方が無難です。
少なくとも私の環境では化けました。

AuthUserFile    /hoge/test.pwd

は参照するパスワードファイルです。
先程作成したパスワードファイルを指定しています。
パスは絶対パスで指定してあげてください。

require    valid-user

は、どのユーザに認証の許可を出すかです。
「valid-user」を指定すると、先程AuthUserFileで指定したパスワードファイル内の
全ユーザで認証が可能になります。
仮に「/hoge/test.pwd」の中にユーザ「piyo」「piyo2」「piyo3」が定義されていたとすれば
「piyo」「piyo2」「piyo3」のいずれのユーザでも認証可能です。

特定のユーザのみ認証可能としたい場合は、

require    user piyo

のような形で指定します。
「require    user」までが決まり文句です。
この例ではユーザ「piyo」のみが認証可能となります。

複数ユーザに対して許可を出す場合は

require    user piyo piyo2

のように半角スペースで区切って指定します。
この例ではユーザ「piyo」「piyo2」が認証可能です。

ちなみにパスワードファイルにユーザを追加したい場合は、

htpasswd パスワードファイル名 ユーザ名

で追加できます。
「-c」オプションが無いだけで、手順はパスワードファイルを作成したときと同じです。

例えば

htpasswd /hoge/test.pwd piyo2

を実行すれば「/hoge/test.pwd」にユーザ「piyo2」が追加されますよ。

少し話が逸れましたが、あとは作成した「.htaccess」ファイルを
Basic認証を設定したいディレクトリにおけば設定完了です。
「.htaccess」ファイルを置いたディレクトリにブラウザからアクセスして、確認してください。

ってな感じで、任意のディレクトリに対するBasic認証の設定、完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● 環境設定関連  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事