WEBデザイン・開発講義WEB Design&Development Lecture

「Apache」環境の『Basic』と『Digest』認証の設定

「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のユーザー認証」の設定方法
    「ユーザー認証」関連の主なディレクティブには、以下のようなものがあります。
    1. 認証タイプの「AuthType
      「AuthType Basic」は、Basic認証で、「AuthType Digest」の場合は、Digest認証です。
    2. 認証ダイアログに表示されるレルム名「AuthName
    3. パスワードファイルのパス「AuthUserFile
      認証のためのIDとパスワードが記述されたファイル位置指定(パス)します。
    4. アクセス許可「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」の設置内容
      パスワードファイル「.htpasswd」とアクセス制限を追加した初期設定ファイル「httpd.conf」の設置内容
    • 直接対象とするディレクトリに設置」する場合、「.htaccess」ファイルで「ユーザー認証」の関連のディレクティブを指定します。
      例えば、「Digest認証」とパスワードファイル「.htpasswd」(同じディレクトリに設置)でメンバー用「_m」のディレクトリに対する設定は、「.htaccess」に以下のような内容にします。
      AuthType Digest
      AuthName "Member"
      AuthUserFile "c:/WEBserver/htdocs/_m/.htpasswd"
      Require valid-user
      
    • 「_m」フォルダのパスワードファイル「.htpasswd」とアクセス制限用ファイル「.htaccess」の設置内容
      「_m」フォルダのパスワードファイル「.htpasswd」とアクセス制限用ファイル「.htaccess」の設置内容
  • アクセス制限を追加した初期設定ファイル:
    『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】コマンド表示
      「Basic認証」のヘルプコマンドで書式表示
    • htpasswd」コマンドのパスワードファイル作成例
      『basic』認証で「C:\WEBserver\htdocs\phpMyAdmin」ディレクトリに対して、ユーザ名「admin」、パスワード「0000」を設定したい場合の例です。
      「htpasswd」コマンドによるパスワードファイルの作成例
      作成した「パスワードファイル」の内容は、『admin:0000』の平文のパスワードになっています。
  • htdigest」コマンドの操作
    • htdigest」コマンド書式は、
      htdigest [-c] passwardfile realm username
      です。
      ・[-c] ... 新しいパスワードファイル作成
      ・passwardfile ... パスワードファイル名(パス指定)
      ・relm ... レルム名
      ・username ... ユーザ名
    • 【htdigest help】コマンド表示
      「digest認証」のヘルプコマンドで書式表示
    • htdigest」コマンドのパスワードファイル作成例
      『basic』認証で「C:\WEBserver\htdocs\phpMyAdmin」ディレクトリに対して、レルム名「Member」、ユーザ名「user」、パスワード「abcdef」を設定したい場合の例です。
      「htdigest」コマンドによるパスワードファイルの作成例
      作成した「パスワードファイル」の内容は、『user:Member:4dc954267ba96f533d348d6d6f1aed83』のレルム名とハッシュ化パスワードになっています。

『Basic』及び『Digest』認証のHTMLドキュメントの実行

  • 『Basic』認証の「WEB管理者」用アクセス例
    • 「WEB管理者」用の「phpMyAdmin」は、
      MySQL用のツールでインストールした内容です。
    • 「Firefox」ブラウザの認証用ダイアログの「ログイン」から、ユーザー名「admin」とパスワード「0000」を入力して、「OK」ボタンをクリックします。(レルム名が「WEB Administrator」であることを確認)
      「Firefox」ブラウザの認証用ダイアログ
    • ユーザ認証が「OK」のとき、「phpMyAdmin」のログインのHTMLドキュメントの表示内容を確認できます。
      ユーザ認証が「OK」のときの「phpMyAdmin」のログインであるHTMLドキュメント表示内容
  • 『Digest』認証の「メンバー」用アクセス例
    • 「メンバー」用のHTMLファイルを作成して準備
      「ドキュメントルート」ディレクトリ直下の「_m」フォルダに、「index.html」のHTMLドキュメントを作成して設置します。HTMLドキュメントで表示する内容は、「<h1>Member専用のページです。</h1>」です。
      「メンバー」用のHTMLドキュメントの作成内容
    • 「InternetExploler」ブラウザの認証用ダイアログの「ログイン」から、ユーザー名「user」とパスワード「abcdef」を入力して、「OK」ボタンをクリックします。(レルム名が「Member」であることを確認)
      「InternetExploler」ブラウザの認証用ダイアログ
    • ユーザ認証が「OK」のとき、「メンバー」用のHTMLドキュメントの表示内容を確認できます。
      ユーザ認証が「OK」のときの「メンバー」用のHTMLドキュメント表示内容
  • Digest認証テストの「_m」フォルダ一式:
    『_m.zip』のダウンロード

Apache認証の補足説明

Apache認証のリファレンス

pagetopへ