|
htaccess解説/BASIC認証(パスワード認証)
htaccessの認証機能を利用することで、特定のURL(配下)にアクセスした場合、ページの表示前にパスワード認証機能を設けることができます。 この機能によりアクセス制限することで、セキュリティーを高めることができます。 当サイトでは、BASIC認証(パスワード認証)用のhtaccessファイルの自動作成や、実際に動くサンプルを準備していますので、合わせてご確認ください。
認証の種類
htaccessによるパスワード認証には、2種類の機能があります。
- BASIC認証(ベーシック)
一般的で多く利用されている、ユーザーIDとパスワードによる認証機能となります。
サーバーに保管するパスワードは暗号化されていますが、インターネットで通信されるユーザーIDとパスワードは暗号化されていないため、通信を傍受された場合はユーザーIDやパスワードが分かってしまう可能性があります。
強固なセキュリティーが必要場合は、SSL(暗号化通信)や他のhtaccess機能によるアクセス制限を行う必要があります。
ほぼすべてのブラウザで利用することができ、一般的にhtaccessによるパスワード認証はBASIC認証の事を表しています。
- Digest認証(ダイジェスト)
基本的な機能はBASIC認証と同じとなりますが、BASIC認証のセキュリティーを強化するために、インターネットで通信されるユーザーIDとパスワードを暗号化しています。このため、通信が傍受され場合でもユーザーIDやパスワードが分かってしまうリスクが大幅に低下します。
ただし、古いブラウザでは対応指定など制約もあり、あまり利用されていません。
当サイトでは、BASIC認証を中心として記載しています。
セキュリティーを強固にしたhtaccessパスワード認証を行いたい場合は、BASIC認証+SSL通信をお勧めいたします。
認証画面
BASIC認証でユーザーIDとパスワードを入力する画面は、クライアントのOSやブラウザによって異なります。認証画面の表示はブラウザの機能となりますので、サーバー側で画面を指定することはできません。
BASIC認証の設定(方法)
実際にBASIC認証を行うためには、以下の2ファイルを作成し、認証を行いたいサーバーの該当ディレクトリにアップロードする必要があります
- 「.htaccess」ファイル
認証の条件などを指定するファイル(下記参照)
- 「.htpasswd」ファイル
認証時のユーザーとパスワードの情報が格納されたファイル(下記参照)
「.htaccess」ファイル
「.htaccess」ファイルは、パスワード認証を行う条件などを指定できます。 当サイトでは、「.htaccess」ファイルの作成機能がありますので、是非ご利用ください。
<Files ~ "^\.ht">
deny from all
</Files>
AuthUserFile /home/cman/public_html/htaccess/sample/basic/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
| 構文 |
意味 |
<Files ~ "^\.ht">
deny from all
</Files> |
「.htaccess」「.htpasswd」ファイルを外部(ブラウザ)から見えないようにするための設定するため |
| AuthUserFile |
ユーザーIDとパスワードの情報「.htpasswd」ファイルを保管しているサーバー内のパス。 通常は絶対パスで記載する。一般的には、パスの先頭は「/home/」で始まる。 絶対パスが分からない場合は、サーバー管理者に確認ください。 パスを間違えると「No such file or directory: Could not open password file」などのエラーとなる。 |
| AuthGroupFile |
アクセスできるユーザーをグループ分けする場合に指定する。 サンプルでは、グループの指定は無しとなっている。 |
| AuthName |
認証画面に表示するメッセージを設定する。 実際に表示される個所はOSやブラウザにより異なる。(上記「認証画面」を参照) 日本語も指定可能であるが、ブラウザにより文字化けする可能性があるので、なるべく半角英数字で指定した方が良い。 |
| AuthType |
認証タイプを指定する。 サンプルでは、「BASIC」認証が指定されている。 「Digest」も指定可能であるが、当サイトでは広く利用されているBASIC認証について記載を行っている。 |
| require |
認証したユーザがアクセスできるかの指定を行います。 サンプルでは、「valid-user」を指定してあり、パスワードファイル「.htpasswd」に指定されたユーザー全てをアクセス可能としています。 「valid-user」の他に「user」「group」が指定可能でそれぞれ、アクセスできるユーザーやグループを絞り込みすることが出来ます。 |
| 詳細な設定が必要な場合は、「Apache HTTP サーバ バージョン 2.0 ドキュメント」http://httpd.apache.org/docs/2.0/ja/howto/auth.htmlを参照ください。 |
「.htpasswd」ファイル
「.htpasswd」ファイルは、パスワード認証のユーザーとパスワードを指定できます。 当サイトでは、「.htpasswd」ファイルの作成機能がありますので、是非ご利用ください。
guest:3/H1Ec7SRPVQA
suzuki:$apr1$dTCYavDQ$i75ufSwLF/yH0v5m/l0ZL0
「.htpasswd」ファイルは、「ユーザーID:パスワード」の形式で、認証ユーザー単位に改行を行い記述します。 上記例の場合、「guest」と「suzuki」がユーザーID
パスワードは、パスワード文字列自体が暗号化されています。この暗号化方式は以下の2種類があります。
上記サンプルのパスワード(「:」より右側)は1行目・2行目共に「password」が暗号化されており、1行目が「crypt」方式、2行目が「MD5」方式で暗号化されています。
| 暗号化方式 |
意味 |
crypt
(サンプルの1行目) |
・LinuxやUnixでは、一般的に利用されている暗号化方式です。 ・先頭8文字しかパスワードとして認識されません。 たとえば、「abcdefghijk」でパスワードを作成しても、「abcdefgh」のみが有効となり、「abcdefgh」を入力しただけで、認証OKとなります。 |
MD5
(サンプルの2行目) |
・Windowsでは標準で使用される暗号化方式となります。 ・MD5を利用したhtaccess認証は、使用しているApacheのバージョンににより利用できない可能性があります。 ・通常255文字までのパスワードを指定できます。 |
その他
|