「IT用語集/B/Basic認証」の編集履歴(バックアップ)一覧に戻る

IT用語集/B/Basic認証 - (2013/06/02 (日) 22:18:08) のソース

* Basic認証とは

HTTPプロトコルで規定されている、認証方式で、多くのサーバー、webブラウザが対応している。
ログイン画面や認証機能を作りこむ必要がなく、手軽に利用できる反面、セキュリティ面、機能面で物足りない点もある。

* 特徴
** ログイン画面を作る必要がない。
ユーザー名とパスワードを入力する画面は、クライアント(ブラウザ)に実装されているため、ログイン画面を作る必要がなく、簡単なサーバーの設定だけで利用可能です。
※独自のログイン画面が必要な場合は、Basic認証ではなく、サーバーやフレームワークが提供するセッション機能を活用して認証機能を作成します。


** ログアウト機能がない。
一般的に、「Basic認証にはログアウト機能はない、ログアウトするにはブラウザを閉じるしかない」と言われています。
実はBasic認証には、認証したユーザーを記憶しておく機能がないのです。
本来ならば、Basic認証はアクセスするたび毎回ユーザー名とパスワードを要求する仕組みなのですが、実装にBasic認証のかかったサイトにアクセスしても、ユーザー名とパスワードを入力するのは最初の一回だけです。
実際問題、毎回毎回入力画面が表示されると不便なので、大抵のブラウザにはユーザー名とパスワードを覚えて置いて自動的に送信する仕組みが備わっています。
この仕組みのおかげで、Basic認証のかかっているサイトも便利に利用出来るのですが、反面、あくまでブラウザの便利機能なので、サーバからは一切コントロールが出来ないのです。

***「Basic認証にログアウト機能がない」のまとめ
・Basic認証は本来毎回ユーザーとパスワードを入力する
・それでは不便なのでブラウザが代わりに送信してくれる
・ブラウザの機能なのでサーバーからは手出し出来ない


* Basic認証の危険性
-- ユーザー名とパスワードは暗号化されない。
Basic認証では、ユーザー名とパスワードはBASE64という方式でエンコードして送信されます。
BASE64は暗号ではないので、ユーザー名とパスワードはほぼ丸腰でネットワークに流れてしまいます。

-- 盗聴される可能性が高い。
「ログイン機能がない」でも説明しましたが、Basic認証ではWebサイトにアクセスするたびに、ユーザー名とパスワードを送信しています。
「毎回平文で」ユーザー名とパスワードをネットワーク上に流してしまうので、盗聴の危険性は当然高くなってしまいます。

- 安全に使うには
Basic認証を安全に利用するには以下の方法が考えられます。
消極的な対策
-- 重要な情報を置かない
-- 社内ネットワーク等安全なネットワークで利用する

積極的な対策
-- SSLを利用する
SSLは通信を暗号化する技術なので、SSLを利用すればBasic認証に暗号化の機能がなくても、通信内容を暗号化して安全を確保出来ます。

TomcatはSSL通信の時だけBasic認証を有効にするオプションがあるので、合わせて設定するとより安全に利用できるでしょう。

-- Digest認証を利用する
Digest認証は、Basic認証にパスワードを暗号化する機能を追加した認証方式です。
※正確には暗号化ではなく、パスワードのハッシュを送信します、ハッシュから元のパスワードに戻すのは難しいので、安全と言えます。