SSブログ

たぶん難しくないApache2・初期設定編その3の補足2~「ダイジェスト認証」の場合~ [Linux(Apache)]

 さて。前々アーティクルではBASIC認証を使用した。手軽に使えるし、まあ個人的に使うとかイントラネット内部だけでの使用という程度であるなら、これでもさしたる不都合は無いと思う。ただ、少しでも本格的にWebサーバを運用しようとなると、BASIC認証では不安が残る。
 というもの、認証用のIDとパスワードが平文で流れてしまうので、その筋の人がちょちょいと悪さをしようものならば、たちまちIDとパスワードがブッコ抜かれてしまうという問題がBASIC認証にはあるのであった。

 そこで導入されたのが「ダイジェスト認証」という仕組み。これは、BASIC認証の時にはIDとパスワードをそのまま流していた(厳密には、Base64でエンコードされているので、人間の見た目的にはそのままでは何が書かれているのか判読は不可能だが、簡単にデコードできる代物なので、実質的には「そのまま」流れていると考えてよい)が、ダイジェスト認証では、IDとパスワードを「ハッシュ化」しておくるので、複合化してIDとパスワードを割り出すことが難しくなっている。(しかし、まったく出来ないという訳でもないらしい…詳しいことはよくわからないので興味があるようなら各自で調べてもらいたい

 このダイジェスト認証も、BASIC認証と大体同じような感覚で使用できるので、こちらの設定方法についても説明しておく。

 BASIC認証からの変更点としては、まずはじめに「AuthType Basic」と記述したディレクティブを「AuthType Digest」と書き改めるところから始まる。これで認証方式としてはダイジェスト認証が使用することが宣言される。
 続いて、「AuthBasicProvider」ディレクティブは使用せず、変わりに「AuthDigestProvider」を使用する。引数はfileで変わらないけど。
 「AuthUserFile」と「AuthName」、「Require」はそのまま。ただし、「AuthName」で指定している「認証領域」の文字列は、この後IDとパスワードを作成する際に必要となるのであまりに変な物とか選ぶと後悔します。なぜなら、AuthNameが変更されてしまうと、IDとパスワードを保存しているファイルを最初から作り直すハメになるからである。

 というわけで、BASIC認証とダイジェスト認証とを並べて記述したhttpd.confの内容を例示するとこんな感じ。
<Directory      /var/www/html/auth_contents>
        AuthType        Basic
        AuthBasicProvider       file
        AuthUserFile    auth/userauth
        AuthName        "Takamiya Shrine"
        Require         valid-user
</Directory>

<Directory      /var/www/html/auth_digest>
        AuthType        Digest
        AuthDigestProvider      file
        AuthUserFile    auth/userdigest
        AuthName        "Takamiya Shrine"
        Require         valid-user
</Directory>

 上側のブロックがBASIC認証、下側のブロックがダイジェスト認証。
 なお、BASIC認証で用いるパスワードファイルと、ダイジェスト認証で用いるパスワードファイルとは共用できないので、別々に用意する必要がある。また、上記の例でダイジェスト認証用のパスワードファイルを作成する際のコマンド例は、
[root@kagami conf]# htdigest -c /etc/httpd/auth/userdigest "Takamiya Shrine" kagami.hiiragi
Adding password for kagami.hiiragi in realm Takamiya Shrine.
New password:
Re-type new password:

 こんな具合になる。AuthNameで使用した「認証領域」を引数に指定している所を要チェック。また、認証領域に空白が入っている場合は当然のことながらダブルクォーテーションなどで囲む必要があることは言うまでも無い。さらに、htpasswdコマンドと同様、「-c」オプションの指定には気をつけること。




 あ、モジュールの組み込みも必要。

LoadModule auth_digest_module modules/mod_auth_digest.so

 これが必要。なおBASIC認証を使わないでダイジェスト認証だけ…ということなら

LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_default_module modules/mod_authz_default.so

 こういう具合に指定することになろう。(要するにBASIC認証のモジュールだけ抜く感じで)
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。