現在ログインしているユーザーの Windows 認証を使用して、プログラム内のサーバーにログオンしたいと考えています。
System.Security.Principal.WindowsIdentity.GetCurrent().Name
しかし、それは名前を付けますが、入力するユーザーのパスワードを見つける方法がわかりません。
現在ログインしているユーザーの Windows 認証を使用して、プログラム内のサーバーにログオンしたいと考えています。
System.Security.Principal.WindowsIdentity.GetCurrent().Name
しかし、それは名前を付けますが、入力するユーザーのパスワードを見つける方法がわかりません。
Windows はパスワードを保存することさえしないため、Windows ユーザーのパスワードを取得する方法はまったくありません (保存するのは不可逆的なハッシュのみです)。
パスワードを取得できません。偽装を使用して、接続しようとしているサーバーに ID を渡す必要があります。
ユーザーがアプリケーションにパスワードを提供しない限り、基本ログインにパスワードを使用することはできません。ローカルにログインしているユーザーに基づいて、ある種の偽装または委任権限を行う必要があります。
web.config:
<system.web>
<authentication mode="Windows" />
<identity impersonate="true"/>
</system>
クライアントとサーバーの両方が同じドメインにある場合、ユーザー名とパスワードを指定する必要はありません。
HttpRequest を使用している場合は、LogonUserIdentityを設定する必要があります。
SOAP サービスを呼び出す場合は、Credentialsプロパティを設定する必要があります。
Windows ユーザー認証を使用する場合は、単純なユーザー名とパスワードの組み合わせよりも安全な部分を使用する必要があります。(そして、すべての .NET アプリケーションが完全なアカウント情報にアクセスできることを意味するため、パスワードにアクセスする方法はおそらくありません。)
たとえば、WindowsIdentity.Userは、すべての Windows NT 実装でユーザーに対して一意であると述べられています。(これは、どの Windows NT 実装においても、これが特定のシステムの各ユーザーに固有であることを意味していると思いますが、よくわかりません。)