# HTTPの教科書 8章

HTTPの教科書 8章

認証

コンピューターはディスプレイのまえに座っているのが誰かはわからない。本人であるかを確認するためには以下のような「本人しか知らない情報」もしくは、「本人しか持たない情報」を用いるしかない。

  • パスワード:本人だけが知っている情報
  • ワンタイムトークン:本人だけが持ってる機器等に表示された使い捨てパスワードなどの情報
  • 電子証明書:本人だけが持っている情報
  • バイオメトリクス:指紋や虹彩などの本人の身体情報
  • ICカードなど:本人だけが持っている情報

HTTPで使う認証方式

  • BASIC認証
  • DIGEST認証
  • SSLクライアント認証
  • フォームベースの認証

BASIC認証

HTTP1.0から実装されている認証方式で、現在でも一部で使われている。リクエストがあった場合には401(Authorization )ステータスコードを返す。ユーザーが入力したパスワードとユーザーIDは:でつながれBase64と呼ばれる形式でエンコードしてサーバーに送る。簡単にデコードでき、セキュリティの観点からよわいためにあまり使われない。

DIGEST認証

チャレンジレスポンス方式が使われている。チャレンジコードを使ってレスポンスコードを計算する。これでもまだセキュリティのリスクが有るためあまり使われていない。

SSLクライアント認証

HTTPSのクライアント証明書を利用した認証。予め登録されたクライアントからのアクセスかどうか確かめることができる。

フォームベース認証

クライアントが資格情報を送信し検証結果によって認証を行う方式。基本的には安価で安全だが、実装によってはセキュリティリスクが生じうる。サーバーはステートレスであるため、状態管理ができない。そこでセッション管理とCookieを使ってHTTPにない状態管理の機能を補う。資格情報はメッセージボディに格納されHTTPSで送信される。