現在オフラインです。再接続するためにインターネットの接続を待っています

ICredentials 内のパスワード データは、.NET Framework 4.5 で WCF サービスを WCF クライアントから渡すことができません。

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:3082119
現象
Windows Communication Foundation (WCF) クライアントで、ユーザー名と指定されているパスワードを使用して行うクラスから新しい ICredentials インターフェイスを作成します。次に、引数として ICredentials を受け取る WCF コントラクト メソッドの呼び出しを行います。ネットワーク資格情報に WCF サービスで受信する ICredentials をキャストした後、パスワードのプロパティを保持している空の文字列を検索します。ただし、 Usernameプロパティは、有効で適切な値を保持しているが。
原因
Microsoft.NET Framework 4.0 の場合、新しいプロパティで導入された既知の問題は、 SecurePassword行うクラスに追加されました。SecurePasswordプロパティは、サービス側で逆シリアル化するとき、このプロパティは元のパスワード文字列を上書きします。SecurePasswordプロパティは、SecureString の種類のこと。仕様では、シリアル化され、送信されることはありません。ただし、空の値を使用して、元のパスワード文字列を上書きします。この動作は仕様でもあります。
解決方法
この問題を解決するには、ネットワーク資格情報とは別にサービスにユーザー名とパスワード情報を渡すがあります。資格情報をメソッドの引数としてオブジェクトを受け取る新しい WCF サービスのメソッドに渡すと、資格情報を保持するためにアプリケーション定義オブジェクトを作成することによってこれを行うことができます。このアプリケーション定義のオブジェクトに機密情報が含まれているため、https を使用して WCF サービスに暗号化された接続経由で送信データの werecommend は、セキュリティまたはメッセージ層のセキュリティを転送します。
詳細
次の例では、問題を再現する WCF サービスを示しています。WCF サービスには、次の契約があります。

[ServiceContract]
[ServiceKnownType(typeof(NetworkCredential))]
IService のパブリック インターフェイス
{

[OperationContract]
文字列 GetData(ICredentials value) です。
}

クライアント サービスを使用して、次のようになります。

iCredService.ServiceClient svcClient = 新しい iCredService.ServiceClient() です。
ICredentials iCred = 新しい System.Net.NetworkCredential ("ABC"、「1234」)。
文字列の結果の結果を = = svcClient.GetData(iCred) です。

Visual Studio を使用して値をサービスにブレークポイントを設定します。パスワードは空になります。Microsoft Visual Studio の [ローカル] ウィンドウを調べると、次のテキストを参照してください。

・ value{System.Net.NetworkCredential}System.Net.ICredentials {System.Net.NetworkCredential}
-[System.Net.NetworkCredential]{System.Net.NetworkCredential}System.Net.NetworkCredential
ドメイン"文字列"
パスワード"文字列"
+SecurePassword{System.Security.SecureString}System.Security.SecureString
ユーザー名"ABC"の文字列
ICredentials 行う SecurePassword WCF

警告: この記事は自動翻訳されています

プロパティ

文書番号:3082119 - 最終更新日: 08/28/2015 19:16:00 - リビジョン: 1.0

Microsoft .NET Framework 4.0, Microsoft .NET Framework 4.5, Windows Communication Foundation 4, Windows Communication Foundation 4.5

  • kbmt KB3082119 KbMtja
フィードバック