WEBにおける認証方式


Webには、Basic、Form、Digest、SSLの4つの認証方式が含まれています.以下、一つ一つ述べる.
1.Basic(HTTP 1.0提出)
クライアントがリソースを要求すると、サーバは、Basic認証を使用することを示すRealm情報を持つ401(許可されていない)の応答を送信します.
ブラウザはこの応答を受信すると、ボックスをポップアップし、ユーザー名とパスワードを入力します.ポイントキャンセルは認証をキャンセルすることを示し、ポイントOKはユーザー名、パスワードをサーバに送信します.提出の方式はHTTPの頭の中で加入します:
WWW-Authorization:Basic XXXXXXX
Basicの後ろにはユーザ名、パスワードのBASE 64符号化があります.クライアントプログラミングでは、次のように構成されています.
a. String cre = userName + ":" + password
b. Base64 encode(cre);
c. add to request header with "WWW-Authroization"

2. Form
Formとは、ページ上でForm形式でデータを提出することであり、GETまたはPOST.はAJAXを用いて認証情報を提出することもできる.
3.Digest(HTTP 1.1基本)
リプレイ攻撃を防止するために,ダイジェストアクセス認証を採用する.お客様がリクエストを送信すると、401メッセージが受信され、メッセージには一意の文字列:nonce、
リクエストのたびに違います.たとえば、
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest
realm="xxxxxxx",
qop="auth,auth-int",
nonce="--base code--",
opaque="--base code--"
このときクライアントは、ユーザ名、パスワード、nonce、HTTP Method、URIを検証値ベースとしてハッシュ(デフォルトはMD 5)した要約をサーバに返す.応答ヘッダには、次の5つのセクションが含まれている必要があります.
  • realm:領域によってパスワードが異なる場合があります
  • nonce:チャレンジ値
  • username:ユーザー名
  • digest-uri:要求URI
  • response:要約部
  • サーバ側は受信した情報に格納されたパスワードを加えて新しい要約を算出し,要求中の要約と比較する.nonceが変わるたびに再生攻撃が難しくなるからである.
    4. SSL
    SSLプロトコルはTCP/IPとアプリケーションプロトコルの間にあり、公開鍵体制に基づいてデータ通信の安全性を保証する.SSLプロトコルは2つの層に分けることができる:SSLレコードプロトコル(SSL Record Protocol):TCPなどの信頼できる伝送プロトコルの上に構築され、高レベルプロトコルにデータパッケージ、圧縮、暗号化などの基本機能のサポートを提供する.SSL握手プロトコル(SSL Handshake Protocol):実際のデータ伝送が開始される前に、通信双方がアイデンティティ認証を行い、暗号化アルゴリズムを協議し、暗号化鍵を交換するためのSSL記録プロトコルに基づいている.
    SSLプロトコルが提供するサービスは主に以下の通りである.
    1)ユーザーとサーバーを認証し、データが正しいクライアントとサーバーに送信されることを確保する;
    2)データを暗号化して、途中で盗まれないようにする;
    3)データの完全性を維持し、データが伝送中に変更されないことを確保する.
    SSLプロトコルのワークフロー:
    サーバ認証フェーズ:
    1)クライアントは、新しいセッション接続を開始するためにサーバに開始情報「Hello」を送信する.
    2)サーバは、顧客の情報に基づいて、新しいマスターキー、すなわちセッションキーを生成する必要があるかどうかを決定し、必要に応じて、サーバは、顧客の「Hello」情報に応答する際に、マスターキーを生成するために必要な情報を含む.
    3)お客様は受け取ったサーバーの応答情報に基づいて、主鍵を生成し、サーバーの公開鍵で暗号化してサーバーに伝達する.
    4)サーバは、プライマリ・キーを復元し、クライアントにプライマリ・キーで認証された情報を返して、クライアントにサーバを認証させる.
    ≪ユーザー認証フェーズ|User Authentication Stage|ldap≫:これまでサーバーは顧客認証に合格しており、このフェーズでは主に顧客の認証が完了していました.認証されたサーバーは顧客に質問を送信し(ログイン・ページが多い)、顧客は署名された質問と公開鍵を返し、サーバーに認証を提供します.
    References:
    [1]Basic検証のDomain処理
       
    http://blog.csdn.net/zfive5/archive/2006/11/01/1361138.aspx
    [2]HTTP認証方式
       
    http://blog.csdn.net/hotnet522/archive/2010/08/19/5824716.aspx
    [3]SSL接続とは
       
    http://zhidao.baidu.com/question/39307683.html?fr=ala0