このページは、2019年3月に保存されたアーカイブです。最新の内容ではない場合がありますのでご注意ください
●BASIC認証の機密性について
BASIC認証で入力されるユーザーIDとパスワードは、公開回線上で機密性は保持されない。
base64 符号化はされるが、平文で垂れ流しである。
機密性の対策
SSLを用いる。
phplib の md5 ハッシュを用いる。
特定の画面には、イントラネットからのみとする。(サーバ自体がローカルにある)
IPアドレスの確認も行う。
等々がある。
phplib を使うと、ブラウザ側で JavaScript が有効な場合パスワードの md5 ハッシュを計算してそれを送るので、パスワードのそのものの漏洩はかなり防げる。
BASIC認証を使う限り、毎回ユーザーIDとパスワードを送る必要があるので、すべての画面をSSLで保護して回らないといけない、ということになる。
考えられる案としては、ユーザーID・パスワード以外にクライアントがアクセス可能なIPアドレスの範囲を確認する、閉じたネットワークにする、など。
BASIC認証の概要(HTTPプロトコルとBASIC認証)
BASIC認証は、HTTPによる通信の際にHTTPヘッダにコードを追記することで実現している。
BASIC認証でユーザーID・パスワードによるアクセス制限がされているサイトにアクセスするとき、クライアント(ブラウザ等)は、リクエストヘッダの Authorization: にユーザーID・パスワードを格納してリクエストを行っている。
(リクエストヘッダ中の「Authorization:」の記述はBASIC認証によるものである)
サーバー側では Authorization: ヘッダに記述されているユーザーID・パスワードを解析し、そのユーザーID・パスワードが正しいものであればアクセスを許可し、ユーザーID・パスワードが正しくなければアクセスを許可しない、という制御を行っている。
手続き
BASIC認証でアクセス制限されたサイトにアクセスするときの流れは、次のようになる。
ユーザーがクライアント(IE等のWebブラウザ)に目的のURLを入力する。
クライアントが、Authorization: ヘッダを付加しないで、目的のコンテンツにアクセスする。
サーバーは、401 Authorization Required のレスポンスを返して、クライアントに認証が必要であ る旨を伝える。
クライアントがユーザーにユーザーID・パスワードの入力を求める。
(IE等のブラウザが、ポップアップウインドウを出して、ユーザーID・パスワードの入力をユーザーに求める画面)
ユーザーがユーザーID・パスワードを入力する。
クライアントが、Authorization: ヘッダにユーザーID・パスワードの情報を付加して目的のコンテンツに再度アクセスする。
サーバがユーザーID・パスワードを解析して、認証OKであればコンテンツをクライアントに返す。
クライアントがコンテンツを表示して、ユーザーがそれを閲覧する。
(User)
1--->
<---4
5--->
<---8
(Client)
2--->
<---3
6--->
<---7
(httpd)
(コンテンツデータを1つ取得するために、リクエスト・レスポンスのやりとりが2回行われている)
なお、Authorization: ヘッダには、BASIC認証のユーザーIDとパスワードとを「:(半角のコロン)」でつなげた文字列を、base64した値が格納される。
(例: Authorization: BASIC dXNlcjAxOnBhc3N3b3JkCg== )
このページは、2019年3月に保存されたアーカイブです。最新の内容ではない場合がありますのでご注意ください