「Apache」環境の『Basic』と『Digest』認証の設定とコマンドプロンプトによるパスワードファイル作成
「Apache」環境の『Basic』と『Digest』認証の設定とパスワードファイル作成方法及び実行確認
『Basic』と『Digest』認証の設定※画像クリックで拡大表示(リンク)
- Apacheの「ユーザ認証」の特徴
WEB管理者向けや少数グループ向けの情報をWEBサイトに置いてアクセスしたい場合に、その限られたページ(場所)に対して、「ユーザー名」と「パスワード」を一度設定したらほとんど変更しないように固定的にして、アクセス制限をかけるような認証システムです。- ApacheのWEBサーバの機能で実現するため、プログラミングは不要となります。
- Apacheの認証タイプには、「Basic認証」と「Digest認証」があります。「Basic認証」はパスワードチェックが「平文」に対して、「Digest認証」は「暗号処理」でチェックにするタイプです。
- (注)各自のユーザー名(アカウント)とパスワードを登録して行う会員処理等の「パスワード認証」として利用するには、個人の特定化が難しく、随時追加・変更・削除の処理が発生するため、不向きなユーザー認証方式です。
- Apacheの「ユーザ認証」の仕組み概要
- 「認証対象とするページのディレクトリ」に対して「ユーザー認証」を利用するには、「認証用設定ファイル」の設定が必要です。「『conf』フォルダのhtpd.confファイルとパスワードファイルで設定」する場合と「直接対象とするディレクトリに設置」する場合の2通りの方法があります。
- 【1】クライアントから「認証対象ページ」へアクセス「HTTP REQUEST」するとApacheのWEBサーバが「認証が必要」と判断して、クライアントのブラウザへ「ログイン」フォームから「ユーザー名」と「パスワード」を入力するように要求(返信)します。
※「ログイン」フォームは、ブラウザにより表示形式が異なります。 - 【2】入力された「ユーザー名」と「パスワード」をCGIでWEBサーバが受け取り、「認証用設定ファイル」の内容と照合し、一致しているかを判断します。
- 【3】認証が「OK」のときは、WEBサーバがアクセスした認証ページの内容を返信「HTTP RESPONSE」します。
- 【3】認証が「NG」のときは、再度ログインするようにブラウザに返信して、ブラウザが「ログイン」フォームを表示します。
- 「Apacheのユーザー認証」の設定方法
「ユーザー認証」関連の主なディレクティブには、以下のようなものがあります。
- 認証タイプの「AuthType」
「AuthType Basic」は、Basic認証で、「AuthType Digest」の場合は、Digest認証です。 - 認証ダイアログに表示されるレルム名「AuthName」
- パスワードファイルのパス「AuthUserFile」
認証のためのIDとパスワードが記述されたファイル位置指定(パス)します。 - アクセス許可「Require」
指定オプションには、[user ユーザ名/group グループ名/ip ipアドレスの範囲/valid-user]などがあります。
※「Require valid-user」は、"認証されたユーザーすべて"に対してアクセス許可するの意味。
- 「Digest認証」を利用するには、
初期設定ファイルの「httpd.conf」にある「LoadModule auth_digest_module modules/mod_auth_digest.so」が「OFF」になっているため、先頭の「#」を削除して「ON」にする必要があります。 - 「『conf』フォルダのhtpd.confファイルとパスワードファイルで設定」する場合、ユーザー認証したいディレクトリに対して、「<Directory "パス">」ディレクティブでHTMLドキュメントの場所を特定化し、「AuthUserFile」で「パスワード」ファイルのパスを指定します。
例えば、「Basic認証」とパスワードファイル「.htpasswd」でMySQL用ツール「phpMyAdmin」のディレクトリに対する設定は、「conf」フォルダにある「httpd.conf」に以下のような内容を追加します。
<Directory "c:/WEBserver/htdocs/phpMyAdmin"> AuthType Basic AuthName "WEB Administrator" AuthUserFile "c:/WEBserver/conf/.htpasswd" Require valid-user </Directory>
- 「conf」フォルダのパスワードファイル「.htpasswd」とアクセス制限を追加した初期設定ファイル「httpd.conf」の設置内容
- 「直接対象とするディレクトリに設置」する場合、「.htaccess」ファイルで「ユーザー認証」の関連のディレクティブを指定します。
例えば、「Digest認証」とパスワードファイル「.htpasswd」(同じディレクトリに設置)でメンバー用「_m」のディレクトリに対する設定は、「.htaccess」に以下のような内容にします。AuthType Digest AuthName "Member" AuthUserFile "c:/WEBserver/htdocs/_m/.htpasswd" Require valid-user
- 「_m」フォルダのパスワードファイル「.htpasswd」とアクセス制限用ファイル「.htaccess」の設置内容
- 認証タイプの「AuthType」
- アクセス制限を追加した初期設定ファイル:
『httpd_auth.zip』のダウンロード
(※「httpd.conf」に追加変更した内容の最終版)
『Basic』認証と『Digest』認証のパスワードファイル作成のコマンド操作
- Apacheの「パスワード」ファイル作成のコマンド
「Basic認証」用の「htpasswd」コマンドと「Digest認証」用の「htdigest」コマンドがあります。 - 「htpasswd」コマンドの操作
- 「htpasswd」コマンド書式は、
htpasswd [option] [passwardfile] [username]
[password]
です。
・[option] ... 「-c」:新しいパスワードファイル作成、
「-p」:平文のまま 等
・[passwardfile] ... パスワードファイル名(パス指定)
・[username] ... ユーザ名
・[password] ... パスワード
【htpasswd help】コマンド表示 - 【htpasswd help】コマンド表示
- 「htpasswd」コマンドのパスワードファイル作成例
『basic』認証で「C:\WEBserver\htdocs\phpMyAdmin」ディレクトリに対して、ユーザ名「admin」、パスワード「0000」を設定したい場合の例です。
※作成した「パスワードファイル」の内容は、『admin:0000』の平文のパスワードになっています。
- 「htpasswd」コマンド書式は、
- 「htdigest」コマンドの操作
- 「htdigest」コマンド書式は、
htdigest [-c] passwardfile realm username
です。
・[-c] ... 新しいパスワードファイル作成
・passwardfile ... パスワードファイル名(パス指定)
・relm ... レルム名
・username ... ユーザ名 - 【htdigest help】コマンド表示
- 「htdigest」コマンドのパスワードファイル作成例
『basic』認証で「C:\WEBserver\htdocs\phpMyAdmin」ディレクトリに対して、レルム名「Member」、ユーザ名「user」、パスワード「abcdef」を設定したい場合の例です。
※作成した「パスワードファイル」の内容は、『user:Member:4dc954267ba96f533d348d6d6f1aed83』のレルム名とハッシュ化パスワードになっています。
- 「htdigest」コマンド書式は、
『Basic』及び『Digest』認証のHTMLドキュメントの実行
- 『Basic』認証の「WEB管理者」用アクセス例
- 「WEB管理者」用の「phpMyAdmin」は、
MySQL用のツールでインストールした内容です。 - 「Firefox」ブラウザの認証用ダイアログの「ログイン」から、ユーザー名「admin」とパスワード「0000」を入力して、「OK」ボタンをクリックします。(レルム名が「WEB Administrator」であることを確認)
- ユーザ認証が「OK」のとき、「phpMyAdmin」のログインのHTMLドキュメントの表示内容を確認できます。
- 「WEB管理者」用の「phpMyAdmin」は、
- 『Digest』認証の「メンバー」用アクセス例
- Digest認証テストの「_m」フォルダ一式:
『_m.zip』のダウンロード