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

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

* Basic認証とは

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

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


** ■ログアウト機能がない。
- Basic認証にはログアウト機能はない、ログアウトするにはブラウザを閉じるしかない。

一般的に、Basic認証はこのように言われています。
実は、この言葉には裏がありまして、本来のBasic認証の姿としては
- そもそもログインという機能がない。
- 通信のたびに、毎回ユーザー名とパスワードで認証する。
これが、Basic認証の本来の姿ですが、実際に毎回ユーザー名とパスワードを要求されたら、人間が使うにはとてもとても大変で誰も使いたがりません。

そこで、大抵のブラウザには、認証が成功した時のユーザー名とパスワードを覚えて置いて、次の通信からは自動的に送信する仕組みが備わっているのです。
この仕組みのおかげで、Basic認証のかかっているサイトも便利に利用出来るのですが、
反面、あくまでブラウザの便利機能なので、サーバからは一切コントロールが出来ないのです。

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


* セキュリティ面の特徴
** ■ユーザー名とパスワードは暗号化されない。
Basic認証では、ユーザー名とパスワードはBASE64という方式でエンコードして送信されます。
BASE64は暗号ではないので、ユーザー名とパスワードはほぼ丸腰でネットワークに流れてしまいます。

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

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

*** 積極的な対策
- SSLを利用する
SSLは通信を暗号化する技術なので、SSLを利用すればBasic認証に暗号化の機能がなくても、通信内容を暗号化して安全を確保出来ます。
TomcatはSSL通信の時だけBasic認証を有効にするオプションがあるので、合わせて設定するとより安全に利用できるでしょう。

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