[[Apache/Tips]] #contents ---- * .htaccess を用いた Basic 認証(基本認証) [#d0f6ad9c] ** Basic 認証って? [#jc661901] Basic 認証(基本認証)は Apache に古くから実装されている認証方式です。標準で認証機能が apache に実装され設定が非常に手軽なことから広く使われています。 ですが、最近の Apache 2.x 以降は [[Digest 認証:http://pocketstudio.jp/linux/?Apache%2FTips%2FDigest%20%C7%A7%BE%DA]]が標準で実装されるようになりました。特別な理由が無い限り [[Digest 認証:http://pocketstudio.jp/linux/?Apache%2FTips%2FDigest%20%C7%A7%BE%DA]]を用いるほうがセキュリティ的に望ましいと言えるでしょう。 とはいえ、Basic 認証は設置の手軽さと汎用性から、とりあえず手軽に認証する方法として今後も重宝されるでしょう ** とにかく Basic 認証を使ってみる [#x0aea5f3] 認証するファイルの置き場所は "/home/ayaka/.htpasswd" とします。.htpasswd のようなファイルは apache の設定で見えなくされているとはいえ((標準で .ht と付く名前のファイルは見えないように httpd.conf で指定されています)) public_html 配下に置くのは好ましくないとされます(サーバの設定によっては中身が晒されてしまう危険性があるためです)。 認証する時に表示される名前は "Warehouse" とします。 認証するユーザ名は "admin" とします。パスワードは適当です。 では、まず htpasswd コマンドによってユーザを追加します。 $ htpasswd -c /home/ayaka/.htpasswd admin New password: Re-type new password: Adding password for user admin 複数のユーザを追加するときは -c を省いて、同様にコマンドを入力します。たとえば admin2 を追加するときには、 $ htpasswd /home/ayaka/.htpasswd admin2 New password: Re-type new password: Adding password for user admin2 このようになります。cat でパスワードファイルを覗いてみると、admin と admin2 が追加されている事が分かります。 $ cat /home/ayaka/.htpasswd admin:A.JT/17eUdFYs admin2:iUWCSusG1geEo もしパスワードからユーザ情報を削除したい場合 -D オプションをつけます(これは Apache 2.0.46 以降の htpasswd です。それ以前の Apache では vi エディタなどでファイルを開き、該当するユーザの行を削除しなくてはいけません)。 $ htpasswd -D /home/ayaka/.htpasswd admin2 Deleting password for user admin2 このように admin2 のパスワード情報が削除されたと表示されます。 次に .htaccess の設置です。 $ vi /home/ayaka/public_html/auth/.htaccess vi エディタなどでファイルを開くか FTP でファイルを転送します。記述は次のようなものです。 AuthType Basic AuthName "Warehouse" AuthUserFile /home/ayaka/.htpasswd Require user admin - AuthType = 認証方式 = Basic 認証(基本認証)という意味です - AuthName = 認証時にブラウザに表示される場所名です - AuthUserFile = 認証時に使う認証用のユーザ名とパスワードのファイルです。htpasswd コマンドで作成します。 - Require = AuthUserFile で指定されているユーザに対して認証許可を与えます。この部分は特定のユーザのみにしかアクセスを許さないようにすることも出来ます(たとえ AuthUserFile で指定されたファイル名のなかに情報があっても)。例として admin と system というユーザのみ認証させたくない場合は "Require user" の後にユーザ名を入れます。複数のユーザが居るときは "," で区切ります。 Require user admin,system あとはブラウザからアクセスして認証画面の表示を確認します。(なお最近の apache 2.x では valid-user が使えなくなりました。.htaccess に記述しても「reason: unknown require directive:"valiid-user"」とエラーが出るのでシステムのバージョンアップ時には要注意です。) #ref(http://pocketstudio.jp/r_images/wiki_linux/2005/apache_basic.gif); 以上で Basic 認証についての解説は終わりです。 ほとんとにたような手順で、よりセキュリティが高い [[Digest 認証:http://pocketstudio.jp/linux/?Apache%2FTips%2FDigest%20%C7%A7%BE%DA]] を使うこともできますので、時間があれば是非是非試してみてください。