よく使うhtaccess
cman.jp cman.jp > よく使うhtaccess > 解説・自動作成 > BASIC認証(Password)

htaccessによるBASIC認証(パスワード認証)

htaccessの認証機能を利用することで、特定のURL(配下)にアクセスした場合、ページの表示前にパスワード認証機能を設けることができます。
この機能によりアクセス制限することで、セキュリティーを高めることができます。
当サイトでは、BASIC認証(パスワード認証)用のhtaccessファイルの自動作成や、実際に動くサンプルを準備しています。

広告

BASIC認証の作成

対話式にBASIC認証のhtaccessを作成することができます。
ユーザ/パスワードファイルのみ作成する場合は、下段のみ入力してください。

htpasswdを配置するパス
AuthUserFile

(例) /home/xxxx/public_html/admin/.htpasswd
認証画面表示メッセージ
AuthName
No ユーザーID パスワード
入力確認
暗号種類
1
2
3
4
5
ページTOP

BASIC認証の解説

認証の種類

htaccessによるパスワード認証には、2種類の機能があります。

BASIC認証(ベーシック)
一般的で多く利用されている、ユーザーIDとパスワードによる認証機能となります。
サーバーに保管するパスワードは暗号化されていますが、インターネットで通信されるユーザーIDとパスワードは暗号化されていないため、通信を傍受された場合はユーザーIDやパスワードが分かってしまう可能性があります。
強固なセキュリティーが必要場合は、SSL(暗号化通信)や他のhtaccess機能によるアクセス制限を行う必要があります。
ほぼすべてのブラウザで利用することができ、一般的にhtaccessによるパスワード認証はBASIC認証の事を表しています。
Digest認証(ダイジェスト)
基本的な機能はBASIC認証と同じとなりますが、BASIC認証のセキュリティーを強化するために、インターネットで通信されるユーザーIDとパスワードを暗号化しています。このため、通信が傍受され場合でもユーザーIDやパスワードが分かってしまうリスクが大幅に低下します。
ただし、古いブラウザでは対応指定など制約もあり、あまり利用されていません。

当サイトでは、BASIC認証を中心として記載しています。
セキュリティーを強固にしたhtaccessパスワード認証を行いたい場合は、BASIC認証+SSL通信をお勧めいたします。

ページTOP

BASIC認証時の画面イメージ

BASIC認証でユーザーIDとパスワードを入力する画面は、クライアントのOSやブラウザ種類・バージョンによって異なります。認証画面をサーバー側で画面を指定することはできません。

以下はBASIC認証画面イメージとなりますが、バージョンで異なる場合がございますのでご注意ください。。

Windows7 + IE11
Windows7 + Chrome43
ページTOP

BASIC認証の設定(利用)方法

BASIC認証を行うためには、以下のファイルを作成し、認証を行いたいサーバーの該当ディレクトリにアップロードする必要があります 。

「.htaccess」ファイル (必須)
認証の条件などを指定するファイルを作成します 。
「.htpasswd」ファイル (必須)
認証時のユーザーとパスワードの情報が格納されたファイルを作成します。
ファイル名は「.htpasswd」でなくても問題ありません。一般的には「.htpasswd」を使用します。
「.htgroup」ファイル (任意)
通常は使用しません。グループ管理による認証が必要な場合にグループと構成メンバーの情報が格納されたファイルを作成します
ファイル名は「.htgroup」でなくても問題ありません。一般的には「.htgroup」を使用します。
ページTOP

「.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

「.htpasswd」ファイル(ユーザーIDとパスワードの情報)を格納しているサーバー内のパスを指定します。
ファイル名は何でも構いませんが「.htpasswd」が一般的です。

絶対パスで記載します。絶対パスが分からない場合は、サーバー管理者に確認ください。

パスを間違えると「No such file or directory: Could not open password file」などのエラーとなります。

AuthGroupFile

アクセスできるユーザーをグループ分けする場合に指定します。

サンプルでは、グループの指定は無しとしています。
下記「.htgroup」ファイルをご確認ください。

AuthName

認証画面に表示するメッセージを設定します。
実際に表示される個所はOSやブラウザにより異なります。

日本語も指定可能ですが、ブラウザにより文字化けする可能性があるので注意が必要です。

AuthType

認証タイプを指定します。

サンプルでは「BASIC」認証が指定されています。
「Digest」も指定可能ですが、当サイトでは広く利用されているBASIC認証について記載しています。

require

認証したユーザがアクセスできるかの指定を行います。

サンプルでは、「valid-user」を指定してあり、パスワードファイル「.htpasswd」に指定されたユーザー全てをアクセス可能としています。

「valid-user」の他に「user」「group」が指定可能でそれぞれ、アクセスできるユーザーやグループを絞り込みすることが出来ます。
詳細は下記をご確認ください。

詳細な設定が必要な場合は「Apache HTTP サーバ バージョン 2.0 ドキュメント」を確認ください。
ページTOP

「.htpasswd」(ユーザID/パスワード)ファイル

「.htpasswd」ファイルは、ユーザIDとパスワードを管理したファイルです。
ファイル名は「.htpasswd」でなくても構いませんが、当サイトでは一般的なファイル名「.htpasswd」で記載しています。

guest:3/H1Ec7SRPVQA
suzuki:$apr1$dTCYavDQ$i75ufSwLF/yH0v5m/l0ZL0

「.htpasswd」ファイルは、「ユーザーID:パスワード」の形式で、認証ユーザー単位に改行を行い記述します。
上記例の場合、「guest」と「suzuki」がユーザーID

パスワードは、パスワード文字列自体が暗号化されており、暗号化方式は複数あります。

上記サンプルのパスワード(「:」より右側)は1行目が「DES(crypt)」方式、2行目が「MD5」方式で暗号化されています。
おすすめは「MD5」です。

暗号化方式 意味
DES
(crypt)

LinuxやUnixで多く利用されている暗号化方式です。

ただし、先頭8文字しかパスワードとして認識されません。
たとえば、「abcdefghijk」でパスワードを作成しても「abcdefgh」のみが有効となり、「abcdefgh」を入力しただけで、認証OKとなります。

MD5

Windowsで多く利用される暗号化方式となります。

LinuxやUnixでも利用可能ですが、使用しているApacheのバージョンにより利用できない可能性がありますので注意ください。

255文字までのパスワードを指定できます。

上記以外にも暗号化方式はほかにもありますが、htaccessで使用する代表的な暗号化は上記2つとなります。
ページTOP

「.htgroup」(グループ/ユーザID)ファイル

「.htgroup」ファイルは、グループとユーザIDを管理したファイルです。
グループ認証(「require」に「group」を指定)の場合のみファイルを作成する必要があります。
ファイル名は「.htgroup」でなくても構いませんが、当サイトでは一般的なファイル名「.htgroup」で記載しています。

keiri:tamada suzuki okazaki
jinji:satou takahashi

「.htgroup」ファイルは、「グループ:ユーザーID ユーザーID ・・・」の形式で、認証グループ単位に改行を行い記述します。
上記例の場合、「keiri」と「jinji」がグループ

ユーザIDを複数記載する場合は、半角スペースで区切ります。

ページTOP

「require」による認証範囲の指定

「require」を利用することで「.htpasswd」に指定されているユーザをさらに制限することができます。

# ユーザを指定する場合
require user satou suzuki

# グループを指定する場合
require group jinji keiri

# 指定しない場合
require valid-user
requireの指定 意味
user

AuthUserFile(.htpasswd)で指定されたユーザの内、特定ユーザのみ認証する

group

AuthUserFile(.htpasswd)で指定されたユーザ かつ AuthGroupFile(.htgroup)のグループに該当するユーザのみ認証する

valid-user

AuthUserFile(.htpasswd)で指定されたユーザすべてを認証する

たとえば、

「.htgroup」の内容

keiri:yamada suzuki
jinji:okazaki
eigyo:yamada satou takahashi

「.htpasswd」の内容

yamada:BEKN/mkIuOMV6
suzuki:4mfPTWkKb8shI
okazaki:nsqhMzJZFRmjM
satou:6Q7g34bm5xRUo
takahashi:hbVZkk06OF906

「require user satou suzuki」の場合、
satou,suzuki以外のyamada,okazaki,takahashiは認証されない

「require group keiri」の場合、
yamada,suzuki以外のsatou,okazaki,takahashiは認証されない

「require」を利用することでディレクトリ毎に「.htpasswd」「.htgroup」を用意する必要がなくなります。サーバ全体で1つのファイルで管理することができるので、ユーザID増減のメンテナンスが向上します。

ページTOP

BASIC認証 サンプル

以下のボタンでサンプルをご確認いただけます。

サンプル
ページTOP
広告
QrCode
このページのURL
スマートフォン・タブレット運営:株式会社シーマン