web-dev-qa-db-ja.com

現在のユーザーのNetworkCredentialの取得(C#)

コンソールアプリケーションからWebサービスを呼び出そうとしていますが、クライアントにSystem.Net.NetworkCredentialオブジェクト。
ユーザー名/パスワードの入力を求めずに、アプリケーションを起動したユーザーのNetworkCredentialオブジェクトを作成できますか?

38
Paolo Tedesco

呼び出される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");
46
jrista

System.Security.Principal.WindowsIdentity.GetCurrent() を使用してユーザー名を取得できますが、現在のユーザーパスワードを取得する方法はありません!

3
abatishchev