Ubuntuでクライアント側からのBasic認証

Basic認証をクライアント側から使えるようにする

 クライアント側からBasic認証を設定するのは結構簡単。その前にApache2側で.htaccessファイルと.htpasswdファイルがWebサーバー内で使えるようにしておかなくてはなりません。
 UbuntuのApache2ですと、apache2.conf内に以下の記述がないとダメです。
AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>
 まずはアクセスファイルのファイル名が.htaccessという名前であることを記述します。セキュリティー上他のファイル名にすることもできますが、.(ドット)をつけて隠しファイルにしましょう。次にパスワードファイルなどの.htpasswdが読み込めるようにします。デフォルトでは.htではじまるファイル名ということになっていて特に.htpasswdである必要はありません。慣例上、.htaccessと.htpasswdということになっているだけです。
 この設定がなかったら追加しておきます。(たぶんデフォルトでこんな風になっている筈です。)
 次にすべてのユーザーに.htaccessと.htpasswdの使用を可能にさせるには、usrdir.confに以下の記述をしてください。
<Directory /home/*/public_html>
  AllowOverride FileInfo AuthConfig Limit Indexes
  Options FollowSymLinks MultiViews SymLinksIfOwnerMatch IncludesNoExec ExecCGI
  <Limit GET POST OPTIONS>
    Order allow,deny
    Allow from all
  </Limit>
  <LimitExcept GET POST OPTIONS>
    Order deny,allow
    Deny from all
  </LimitExcept>
</Directory>
 AllowOverrideがその設定です。.htaccessファイルの使用を許可します。この設定が終わったらApache2を再起動させます。
# /etc/init.d/apache2 restart

Basic認証をクライアント側から設定する

 クライアント側からの設定はとても簡単で、ChamaNetさんで詳しく解説してくれている上に暗号化もやってくれます。説明が重複しますが、ここでも。
 まず認証ロックをかけたいディレクトリに.htaccessファイルをアップロードします。こうすると、そのディレクトリ以下すべてのディレクトリにロックがかかります。ファイルの中身はこんな風です。
AuthUserFile home/public_html/username/userdir/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>
 書き直す部分は、一行目の
home/public_html/username/userdir/.htpasswdで、ここには.htaccessファイルがある場所をサーバーのフルパスで記述します。この場合、httpアクセスして認証機能が作用する場所は、http://xxxxxxx/userdir/ということになります。後はChamaNetさんで暗号化したファイルと.htpasswdとかして同じディレクトリに放り込んでおけば作動します。ファイルのパーミッションは604か644で大丈夫みたいです。

 

 






プロフィール



  • Name :: 山上オサム ♂(37)
  • Hobby :: 武術
  • Work :: Web Designer