1

system.net.credentialcache.defaultcredentialsを使用して現在のユーザーのクレデンシャルをWebサービスに渡すと、情報はどちらの方法で転送されますか?クリアテキストになるとは思わないので、クレデンシャルを暗号化する必要がありますが、どうですか?

4

1 に答える 1

1

サーバーが HEAD 応答で何を要求するかによって異なります。

たとえば、Web サービスに対して HEAD 要求を実行し、その応答の http ヘッダーの 1 つが "WWW-Authenticate: NTLM" である場合、DefaultCredentials に格納されている資格情報は NTLM を使用して暗号化され、完全な GET で送信されます。 /POST/PUT/何でも。これを確実に行うには、Web サーバーが NTLM 認証を要求するように構成されていることを確認する必要があります。IISで「統合Windows認証」を選択した場合です。TomCat についてはよくわかりませんが、この投稿は適切に見えます。

ただし、Web サーバーが特定のリソースに対して "WWW-Authenticate: Basic" で応答する場合 (これには、base64 としてエンコードされた (注: 暗号化されていない)クリア テキストで資格情報を送信することが含まれます) と見なされるため、ArgumentException が発生します。基本認証を介してアカウントの資格情報を送信するためのセキュリティ例外。

Web サーバーは複数の認証方法を受け入れるように構成することもできますが、これらの中で最も弱いものを受け入れる準備を常に整えておく必要があります。クリアテキスト。

ブラウザは通常、利用可能な最も強力な方法を選択します。.net ライブラリも同じように動作するのではないかと思います (確かなことはわかりません)。

編集

Web サーバーが Web サービスに対して NTLMのみを要求する限り、適切なクライアントが資格情報をクリア テキストで送信しないことは確実です。.net フレームワークのネット クラスを使用すると、DefaultCredentials を使用し、基本認証ヘッダーを自分で手動で挿入しない場合、資格情報が NTLM を使用して暗号化されて送信されることを確認できます。

彼らの資格情報は、暗号化された大きな混乱としてサーバーに到着し、Web サーバー以外の誰にでも届きます。Web サーバーはそれらを解読して、現在ログインしているユーザーのユーザー名、パスワード、およびドメインが含まれていることを確認します。

DefaultCredentials が送信する資格情報は、DefaultCredentials を要求したアプリケーションの種類によって異なります。ユーザーのアカウントで実行されているクライアント アプリケーションの場合、資格情報はそのユーザーのものになります。Web サービスと通信している ASP.NET アプリケーションの場合、アプリケーション プールが実行されているアカウントの資格情報が使用されます。既定では、これはNETWORK_SERVICE.

于 2009-06-02T10:13:07.323 に答える