では、今日も授業を始める。今日のテーマはベーシック認証(Basic認証)だ。
ベーシック認証って何?
ベーシック認証は、Webサイトのログイン認証で利用される簡易的な認証方式だ。
Apache(Webサーバソフトウェア)でベーシック認証を設定したサイトにアクセスすると、ポップアップが表示されて、IDとパスワードを入力しないと画面が表示されない。
ベーシック認証は、基本認証とも呼ばれている。
簡易的ってどういうこと!?
ベーシック認証は、非常に簡単な認証機能でセキュリティレベルとしては非常に低いものだ。
インターネットに公開していない社内利用のサイトの認証に利用したり、一時的な認証として利用したりした方がいい認証方式ってことだ。
セキュリティレベルが低いってのは、技術的に何がどのようになっているから低いの?
ベーシック認証では、クライアントが、ユーザ名とパスワードを:(コロン)でつないで、
Base64でエンコードして送信してくる。Webサーバがその文字列をデコードして、ユーザ名とパスワードが一致したら認証がOKとなり、
Web画面が表示される。
エンコードって?デコードって何!?
エンコード(encode)はデータを一定の規則に基づいて変換することだ。
エンコードは符号化のようなものだ。エンコードした文字列を元に戻すことをデコードという。
つまり、AをエンコードしてBにしたものを、BをデコードしてAに戻すことができる。
次にBASE64とはエンコード方式の1つで、一定の規則に基づいてテキストデータに置き換える変換方式だ。
BASE64は64種類の文字(A~Z、a~z、0~9、記号(+,/))を組み合わせてデータを表現する方式だ。
Base64は64文字に変換するエンコード方式で、
Base64のエンコードは、64個のテキストデータに変換するってことね。
エンコードの逆がデコードってことね。
エンコードしたデータを元に戻すことがデコードだ。
http通信で、クライアントがBase64エンコードして送信したIDとパスワード(コロンでつなげる)が
途中でパケットを盗聴されて、デコードされると、IDもパスワードもばれてしまう。
HTTPS通信なら暗号化されているけど、HTTP通信の場合は暗号化されずにクリアテキスト(平文)で送信されるから、パケットをキャプチャされると、
デコードできちゃうから、セキュリティレベルが弱いってことね。
うむ。サイトへアクセスする度に、クライアントは毎回パケットに、IDとパスワードをBase64でエンコードして、パケットにその文字列を埋め込んで送信している。
次に設定方法を説明する。Apacheでベーシック認証を設定するには、.htaccessファイルと.htpasswdファイルを作成すればいい。
2つのファイルを作成すればいいのね。
例えば、.htaccessファイルは以下のように記述する。
AuthType Basic
AuthName "Please enter your ID and password."
AuthUserFile /home/・・・/フォルダ名/.htpasswd
require valid-user
※AuthTypeはBasicと指定するとベーシック認証になる。
※AuthNameは適当な文字列を書く。認証画面が表示されたときにAuthNameに記述した文字を表示するブラウザもある。
※AuthUserFileは、IDとパスワードを記述した.htpasswdファイルの場所を書く。
※require valid-userはすべてのアクセスしてきたユーザを認証するという意味だ。
一度認証されるとブラウザを終了するまで有効になる。
.htpasswdファイルはIDとパスワードを保存したファイルだ。
1行に1ユーザ分(ID名:エンコードされたパスワード)を記述する。
.htpasswdファイルに3つのIDを作成する場合は3行になるのね。
user1:エンコードしたパスワード1
user2:エンコードしたパスワード2
user3:エンコードしたパスワード3
Basic認証はディレクトリ単位のアクセス制限で、例えば、www.example.comの/test/というディレクトリに対して、ベーシック認証を設定した場合は/test/ディレクトリ配下にあるページすべてにベーシック認証がされるようになる。
では、今日はここまで。
は~い
1.ベーシック認証は簡易的な認証方式
2.ベーシック認証はセキュリティレベルが非常に低い
3.ベーシック認証は基本認証ともいう
4.ベーシック認証はBase64でエンコード
5.Apacheでは.htaccessと.htpasswdで設定
6.エンコードはデータ形式を変換すること
7.デコードはデコードしたものを戻すこと