Apacheのユーザー認証方式「基本認証」と「ダイジェスト認証」とは? (1)

投稿者 : OSCA

[PR] "東野・岡村の旅猿"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

Apache のユーザー認証方式には「基本認証 (ベーシック認証)」と「ダイジェスト認証」の2つがあります。 本稿ではそれぞれの認証について概要を説明し、次稿ではさらに詳しい仕様や技術的なことを説明します。

Apache の “ユーザー認証” とは?

Apache でいう “ユーザー認証” とは、特定のページへのアクセスを制限し、正しいアカウントとパスワードを入力した者にしか WEB ページを見せないようにするためのものです。 現在の一般的なブラウザでは、ユーザー認証が掛けられた WEB ページにアクセスすると、アカウントとパスワードを入力するためのポップアップダイアログを表示してユーザーに入力を促します。 (これは各ブラウザの機能ですので、この認証のダイアログのデザインを変更したりすることはできません。)

Apache のユーザー認証には「基本認証 (ベーシック認証)」と「ダイジェスト認証」という2つの認証方式があります。 それぞれの違いは何かを説明します。

基本認証 (ベーシック認証)

基本認証では、認証ダイアログに入力されたアカウントとパスワードをサーバーに送信しますが、この時に入力されたアカウントとパスワードは何も加工されずにサーバーへ送信され、サーバー側は受信したこれらの情報が正しいのかを判断して、アカウントとパスワードに誤りがない場合は WEB ページを表示します。

ここで重要なのはアカウントとパスワードが何も加工されずに送信される点です。 インターネット中をアカウントとパスワードがそのまま送受信されますので、悪意のある経路を通ったり通信を盗聴された場合にはアカウントとパスワードがバレてしまうリスクがあります。 ですので基本認証は、ネットワークが暗号化されている事などを確認の上利用した方が良いでしょう。 またはローカルネットワーク内での利用などに制限するなどの運用にしましょう。

ダイジェスト認証

一方、ダイジェスト認証は基本認証のセキュリティの懸念を解決してくれている認証方式です。 ブラウザとサーバー間で、入力したパスワードを暗号化して通信を行ってくれる認証方式であるため、ネットワークの盗聴などに強いというメリットがあります。 一昔前は「ダイジェスト認証に対応していないブラウザがある」などと参考書に書かれていましたが、現在の一般的なブラウザはダイジェスト認証をほぼサポートしています。

結論 / おわりに

今回は「基本認証」と「ダイジェスト認証」の概要について説明しました。 「どちらを使えばいいのか?」という悩みについては、今ではダイジェスト認証でOKだと思います。

次回は、それぞれの認証方式のもっと仕様・技術についての説明を行います。 (執筆中)

Apacheのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca