Windows認証でBasicHttpBindingを使用するWCFサービスがあります。ほとんどのクライアントはドメインアカウントであり、デフォルトの資格情報を使用してサービスに接続します。
次に、ローカルアカウントで実行されているASP.NETクライアントからサービスに接続します。ASP.NETアプリケーションで使用できるWindowsクレデンシャル(ドメイン\ユーザーとパスワード)を使用してWCFサービスに接続したいと思います。
ClientBase<T>.ClientCredentialsを使用してコードでこれを実行できることはわかっています。
クライアントのweb.configファイルで資格情報(ドメイン\ユーザーとパスワード)を指定して、コードを変更する必要がないようにする方法はありますか?
編集
構成ファイルで実行できない場合、System.Net.ICredentialsまたはSystem.Net.NetworkCredentialをWCFサービスの資格情報として使用する方法はありますか?
.NET Frameworkは、ネットワーククレデンシャルを提供するための同種の方法としてこれらを提供しますが、WCFでは、無関係のSystem.ServiceModel.Description.ClientCredentialsクラスに基づく新しい互換性のないシステムを優先してこれが破棄されたようです。
編集2
元の質問に対するマークの回答を受け入れる-クライアント構成ファイルでこれを行う方法はないようです:(
これはWCFの欠陥だと思います-Microsoftが構成ファイルにクレデンシャルを入れることを故意に思いとどまらせるべきだとは思いません-結局のところ、クレデンシャルはどこかに保存する必要があり、フレームワークには構成ファイルを暗号化する機能が含まれています。このためのカスタムBehaviorExtensionElementを作成できると思いますが、そのまま使用できるはずです。
また、少し一貫性がありません。system.net/ mailSettings / smtp / network構成要素では、資格情報を指定できるので、WCFを使用しないのはなぜですか。
System.Net.NetworkCredentialの使用に関する2番目の質問に関しては、このブログから、少なくともWindows認証を使用している場合は、次のコードで可能であるように思われます。
factory.Credentials.Windows.ClientCredential =
new System.Net.NetworkCredential(name, password, domain);