ウェブサイトにダイジェスト認証を実装してみる

Botti Advent Calendarの12日分です。
今回は、ウェブサイトにダイジェスト認証を実装してみるというタイトル通りのことをやります。
もはや自分のための覚え書き状態になるかもしれませんがご容赦くださいまし。

ダイジェスト認証とは

Webページでユーザ認証を利用してアクセス制限する時、Basic認証やこのダイジェスト認証という方式で簡単に実装できます。
で、このダイジェスト認証とは、サーバへパスワードを送信する際にハッシュ化するため、通信内容を盗聴されてもパスワードが何かをわからせないようにできるという機能があります。
つまりは、暗号化されてないHTTPS通信じゃなくてもある程度、パスワードを守れるということです。

実装

現時点でサーバ(apache)を起動させてあるまたはその準備が整ってる前提でお話しします。
apache2でのサーバの立ち上げかたについてはこのサイトでまだ紹介していないので、こちら(Google先生)からどうぞ。。。。
GoogleSearch “apache2”

手順

ここではapache2での動作で説明します。

1.ユーザ名とパスワードを保存しておくファイルの生成

特にしてする場所はなくどこでもいいのですが、apache2のディレクトリあたりに入れておくと見つけやすいです。
以下はターミナル上でのコマンドになります。

任意のディレクトリに移動後
touch .htdigest
htdigest (-c 追記の際は不要) パスワード保存ファイル "領域名" ユーザー名)

ここでの領域名は、グループのようなものみたいです。任意に決めて大丈夫です。
あと、コマンド内にも書いてありますが、-cコマンドはまだユーザー登録していない時につけてください。

2.apacheの設定ファイルの編集

まずは、モジュールの有効化。
私の場合は”apache2.conf”または”httpd.conf”内に以下の文を追加またはコメントアウトして有効化します。(すでに書いてあることもあるみたいです)
(ちなみに、コメントアウトは最初の#を外すだけです)

LoadModule auth_digest_module modules/mod_auth_digest.so

次に、設定ファイルに認証をするページをとそのページに対する認証の種類を記述します。

<Directory 認証したいページがあるディレクトリ>
        Options Indexes FollowSymLinks
        AllowOverride None
        AuthType Digest
        AuthName "領域名"
        AuthUserFile "htdigestの絶対パス"
        Require 認証するユーザネーム
</Directory>

記述する位置は特にどこでもいいんですが、ファイルの中腹ほどに同じような設定が書いてあるところがあると思うのでそのあたりに記述してあれば大丈夫です。

これで基本的にはDigest認証が動いてくれます。

まとめ

簡単に実装できるのでサイトにアクセス権限をもたせたい時などに有効です。
Basic認証もこのダイジェスト認証も実装に大した差がないので、Basic認証をするくらいならこっちで実装した方がいいと思います。
ただ、個人としてのサイトならば十分ですが、フォーム認証のようにしっかり作り込んであるようなログイン画面でないので、一般的な会員制のサイトなどではどうにもオススメはできません。
場合に応じて良さげな認証方法にするのがいいと思います!

ちなみにフォーム認証とダイジェスト認証の違いなどについてはこちらの記事が参考になりました!
Basic認証とフォームによる認証についてのまとめ
また、ダイジェスト認証について詳しく知りたいかたはこちらにどうぞ。
Wikipedia Digest認証

以上、ウェブサイトにダイジェスト認証を実装してみるでした!

Botti Advent Calendarの一覧はこちら!
スケジュールやこの企画の目的などはこちら!

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください