コンソールアプリケーションからWebサービスを呼び出そうとしていますが、クライアントにSystem.Net.NetworkCredential
オブジェクト。
ユーザー名/パスワードの入力を求めずに、アプリケーションを起動したユーザーのNetworkCredential
オブジェクトを作成できますか?
呼び出されるWebサービスがWindows統合セキュリティを使用する場合、現在のNetworkCredential
からWindowsIdentity
を作成すれば、Webサービスが現在のユーザーのWindowsログインを使用できるようになります。ただし、Webサービスが別のセキュリティモデルを使用している場合、現在のIDからユーザーパスワードを抽出する方法はありません。それ自体は安全ではないため、開発者はユーザーパスワードを盗むことができます。 。ユーザーがパスワードを提供する何らかの方法を提供する必要があり、繰り返し提供する必要がない場合は、安全なキャッシュに保管する必要があります。
編集:現在のIDの資格情報を取得するには、次を使用します。
Uri uri = new Uri("http://tempuri.org/");
ICredentials credentials = CredentialCache.DefaultCredentials;
NetworkCredential credential = credentials.GetCredential(uri, "Basic");
System.Security.Principal.WindowsIdentity.GetCurrent() を使用してユーザー名を取得できますが、現在のユーザーパスワードを取得する方法はありません!