その他・BASIC認証

【 .htpasswd .htaccessによるBASIC認証 】

ApacheによるBASIC認証は、
  • httpd.confによる設定
  • 「.htpasswd」・「.htaccess」ファイルを利用した設定
があります。
ここでは「.htpasswd」・「.htaccess」ファイルを利用した設定をしていきたいと思います。
また、httpd.confデフォルト設定では「.htaccess」は利用出来ないので、利用する場合にはファイルを設置する該当のディレクトリに「AllowOverride All」を指定する必要があります。
認証をするディレクトリが「D:\www\public_html」だった場合、httpd.confに
<Directory "D:/www/public_html">
 AllowOverride All
</Directory>
と、適切な場所へ記載しておく必要があります。
適切な場所が解らない場合は、こちらを参考にしてみてください。 また、該当リンク先を閲覧しても意味が解らない場合は、httpd.confの最終行に追加してください。
「public_html」以下のディレクトリには全て設定が有効になります
Apache2を" C:\ "にインストールしていることを前提に進めていますので、インストール先が違う場合は適所読み替えて作業を行ってください。
【 .htpasswdの作成 】
このファイルの中には「ユーザー名」・「パスワード」が記載されます。
パスワードは暗号化"MD5"が利用できますので万が一の為にも利用しましょう。
ここからの作業は、認証ユーザーが「saru」、パスワードを「test」として進めていきます。
「.htpasswd」ファイルを作成する為に、Apacheには標準でインストール先binフォルダの中に「htpasswd.exe」があります。
これを利用するには「スタートボタン」 -> 「プログラム」 -> 「アクセサリ」 -> 「コマンドプロント」を起動し下記「太文字」の内容を入力します。
Microsoft Windows 2000 [Version5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\Document and Settings\saru>C:\apache2\bin\htpasswd -c C:\.htpasswd saru
  • 「C:\apache2\bin\htpasswd」は、「htpasswd.exe」の場所を指定しています。
  • 「-c」は、「新規ファイル作成」を実行する場合の指示です。
  • 「C:\.htpasswd」は、「新規ファイル作成場所」と「作成ファイル名」の指定です。
  • 「saru」は、「認証を行うユーザー名」です。
入力したらEnterキーを押します。
下記文字が表示されるので、太文字部分を入力します。
New password「test」を入力した後Enterキーを押し、もう1度尋ねられるので同じパスワードを入力し再度Enterキーを押します。
Automatically using MD5 format.
New password :test
Re-type new password :test
ここまでの作業で「.htpasswd」は、保存先に指定したCドライブの中に出来ています。
img158
認証ユーザーを追加する場合は、続けて作業を行います。
この時に「新規作成指示」である「-c」は除いて入力します。
例えば、認証ユーザー「Monkey」を追加する場合は、
C:\Document and Settings\saru>C:\apache2\bin\htpasswd C:\.htpasswd Monkey
と言う具合になり、以下パスワードの設定を同様に進めます。
もし、「-c」を記載したまま作業を進めてしまうと、以前のユーザー(ここではsaru)に上書きして作成されてしまうので注意しましょう。
【 .htaccessの作成 】
次に「.htaccess」ファイルを作成します。
メモ帳を新規作成し、下記の要領で入力します。
AuthType Basic
AuthName "Password Area"
AuthUserFile D:/www/.htpasswd
require valid-user
  • 「AuthType」は、認証タイプ Basicを指定します。
  • 「AuthName」は、認証時に表示される認証名を入力します。(日本語可)
  • 「AuthUserFile」は、「.htpasswd」ファイルを置くディレクトリの場所を指定します。
  • 「require valid-user」は、グループ名など指定しますが「.htpasswd」を使用するので、このまま。
入力し終わりメモ帳を保存する時に、上部メニューより「ファイル」->「名前を付けて保存」を選択し、ファイル名に「".htaccess"」として保存します。
Windows上からは「.」ドットで始まるファイルは基本的に作成できませんが、「"」ダブルクオテーションで入力文字を囲み、名前を付けて保存する場合には作成する事が可能となります。
img204
他にも「.」ドットで始まるファイル名を作成する方法として「コマンドプロント」を利用した方法があります。
これは既にテキストファイル(拡張子.txt)などが存在し、これらのファイル名を「変更」する場合などに。
C:\Document and Settings\saru>rename C:\a .htaccess
  • 「rename」は、ファイル名を変更する指示です。
  • 「C:\a」は、変更前のファイル名を指定します。
  • 「.htaccess」は、変更後のファイル名を指定します。
入力が終わったらEnterキーを入力します。
これで変更後のファイル名になったファイルが、Cドライブ内に作成されています。
このようにWindowsPCからも「.htaccess」としてファイル名が変更できます。
また、他の方法としては、FTPでサーバーへ転送したのちにファイル名をFTPクライアントにて変更する方法もあります。
私の場合、公開ディレクトリは"D:\www\public_html"であり、TOPページからBASIC認証を設定するとします。
※(認証を設定するディレクトリは自分の環境に合わせて読み替えてください。)
httpd.confの設定で「.ht」ファイルは閲覧者から見る事が出来ないようになっていますが、念には念をで公開ディレクトリではなく、1階層上のディレクトリへ置くように「AuthUserFile」を指定します。
http://saru_monkey.com (架空ドメイン)
D
/www … (ここへ.htpasswdを設置)
/public_html(認証ディレクトリ) … (ここへ.htaccessを設置)

これで準備が出来ましたので、各ファイルをディレクトリへ設置します。
・「.htpasswd」・・・公開ディレクトリよりも1階層上に設置します。
・「.htaccess」・・・認証を行いたいディレクトリに設置します。
設置し終わったら、実際にサイトへアクセスして見ましょう。
下記画面は表示されましたか?
もしされなければ、パスワードやファイルの記載が間違っていると考えられますので、もう1度見直して見ましょう。
img159
これでApache2のBASIC認証設定は終了です。
BASIC認証には「.htpasswd/.htaccess」を利用した方法と、「httpd.conf」を利用した方法の2種類があり、ここでは「httpd.conf」を利用した方法を掲載します。
「.htpasswd」ファイルの作成は上記と同様にして作成して頂きます。
Apache2インストール先の「confフォルダ」を開いて頂き、「http.conf」をメモ帳で開きます。
適当な場所へ下記のように記載します。
私の場合、公開ディレクトリは"D:\www\public_html"であり、TOPページからBASIC認証を設定するとします。
※(認証を設定するディレクトリは自分の環境に合わせて読み替えてください。)
<Directory "D:/www/public_html">
AllowOverride None
Order allow,deny
Allow from all
AuthType Basic
AuthName "Password Area"
AuthUesrFile D:/www/.htpasswd
Rrequire valid-user
</Directory>
これだけで、認証の設定は完了です。
メモ帳を保存して閉じ、Apache2を再起動します。
後は作成した「.htpasswd」をAuthUesrFileで指定したディレクトリへ設置し、実際に作動を確認します。
「.htpasswd」ファイルの設置場所は、TOP公開ディレクトリよりも一階層上に設置する事をお薦めします。
http://saru_monkey.com (架空ドメイン)
D
/www … (ここへ.htpasswdを設置)
/public_html(認証ディレクトリ)
設置し終わったら、実際にサイトへアクセスして見ましょう。
下記画面は表示されましたか?
もしされなければ、パスワードやファイルの記載が間違っていると考えられますので、もう1度見直して見ましょう。
img159
これでApache2のBASIC認証設定は終了です。
認証には2つの方法がありますが、自分の好ましい方法にて設定してください。
ただ、このままでは「入力されたユーザー名やパスワード」は暗号化されていません。
身内だけが利用するので、ちょっと見られたくない場所がある…と言った場合には有効だと思いますが、多くの個人情報を含んだディレクトリ等、よりセキュアなサイト運営をされる場合「SSL」等の導入をされた方が宜しいと思います。
いずれ、我が家のServer機にも導入を考えていますので、その時が来ましたら、こちらと併せて掲載していきます。