ダイジェスト認証と基本認証の違いは何ですか?
ダイジェスト認証と基本認証の違いは何ですか?
回答:
ダイジェスト認証は、ハッシュ関数をユーザー名、パスワード、サーバー提供のナンス値、HTTPメソッド、および要求されたURIに適用することにより、暗号化された形式で資格情報を伝達します。
一方、基本認証では、暗号化されていない base64エンコーディングが使用されます。
したがって、基本認証は通常、httpsなどのトランスポート層セキュリティが提供されている場合にのみ使用する必要があります。
参照してくださいRFC-2617を、すべての血みどろの詳細については。
HTTP基本アクセス認証
基本認証では、ユーザー名とパスワードの情報を含む暗号化文字列を生成するために、暗号化ではなくbase64エンコーディングを使用します。HTTP BasicはSSL経由で実装する必要はありませんが、実装しない場合はまったく安全ではありません。だから私はそれなしでそれを使う考えを楽しませるつもりはありません。
長所:
短所:
要約すると、クライアントを制御できる場合、またはクライアントがSSLを使用できることを確認できる場合は、HTTP Basicが適切な選択です。SSLの遅さは、1つの要求を行うだけの速度でキャンセルできます。
基本認証の構文
Value = username:password
Encoded Value = base64(Value)
Authorization Value = Basic <Encoded Value>
//at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>
HTTPダイジェストアクセス認証
ダイジェストアクセス認証は、ハッシュ(つまり、ダイジェストは小さな断片に分割することを意味します)の方法を使用して暗号化の結果を生成します。HTTPダイジェストアクセス認証は、次のように機能するより複雑な認証形式です。
長所:
短所:
要約すると、HTTP Digestは本質的に少なくとも2つの攻撃に対して脆弱ですが、HTTP Basic over SSLでパスワードに強力な暗号化を使用するサーバーは、これらの脆弱性を共有する可能性が低くなります。
ただし、クライアントを制御できない場合、クライアントはSSLなしで基本認証を実行しようとする可能性があり、ダイジェストよりもはるかに安全性が低くなります。
RFC 2069ダイジェストアクセス認証構文
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
RFC 2617ダイジェストアクセス認証構文
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
Postmanでは次のようになります。
注意:
(送信または受信したパケットを分析するツール)を使用した2つのHTTP認証の違いを見てみましょうWireshark
。
1. Http基本認証
クライアントがWebサーバーからの要求に応じて正しいusername:passwordを入力するとすぐに、Webサーバーはデータベースに資格情報が正しいかどうかをチェックし、リソースへのアクセスを許可します。
パケットの送受信方法は次のとおりです。
最初のパケットで、クライアントはリソースでPOSTメソッドを使用して資格情報を入力しlab/webapp/basicauth
ます。その結果、サーバーはhttp応答コード200 okで返信します。つまり、ユーザー名:パスワードは正しかったです。
Authorization
ヘッダーに、基本認証とそれに続くランダムな文字列が表示されます。この文字列は、資格情報のエンコードされた(Base64)バージョンですadmin:aadd
(コロンを含む)。
2。HTTPダイジェスト認証(rfc 2069)
これまでは基本認証が送信する見ているユーザ名:パスワードダイジェスト認証.But、ネットワークを介して平文では送りHASHハッシュアルゴリズムを使用してパスワードのを。
以下は、クライアントからのリクエストとサーバーからのレスポンスを示すパケットです。
クライアントがサーバーから要求された資格情報を入力するとすぐに、パスワードはresponse
アルゴリズムを使用してに変換され、サーバーに送信されます。サーバーデータベースがクライアントからの応答と同じ応答を持っている場合、サーバーはリソースへのアクセスを許可しますそれ以外の場合は401エラー。
上記ではAuthorization
、response
文字列が値を用いて計算されるUsername
、Realm
、Password
、http-method
、URI
及びNonce
画像に示すように:
したがって、ハッシュ(MD5暗号化)が含まれるため、ダイジェスト認証の方が安全であることがわかります。基本認証では正確なパスワードがWiresharkに表示されていても、パケットスニファツールはパスワードを盗聴できません。
基本認証は、ユーザー名とパスワードの情報を含む暗号文字列を生成するために、base 64エンコーディングを使用します。
ダイジェストアクセス認証は、ハッシュ手法を使用して暗号化結果を生成します