我想使用当前登录用户的 Windows 身份验证登录到我的程序内的服务器。我想也许我可以使用
System.Security.Principal.WindowsIdentity.GetCurrent().Name
但是虽然这确实给出了一个名称,但我不知道如何找到用户的密码来输入它。
我想使用当前登录用户的 Windows 身份验证登录到我的程序内的服务器。我想也许我可以使用
System.Security.Principal.WindowsIdentity.GetCurrent().Name
但是虽然这确实给出了一个名称,但我不知道如何找到用户的密码来输入它。
绝对没有办法获取 Windows 用户的密码,因为 Windows 甚至不存储它(它存储的只是一个不可逆的哈希)。
您无法获取密码。您需要使用模拟将身份传递给您尝试连接的服务器。
除非用户将密码提供给您的应用程序,否则您将无法使用他们的密码进行基本登录。您必须根据本地登录的用户进行某种模拟或委派权限。
在 web.config 中:
<system.web>
<authentication mode="Windows" />
<identity impersonate="true"/>
</system>
如果您打算使用 Windows 用户身份验证,您可能应该使用它的某些部分,它比简单的用户名/密码组合更安全。(并且可能无法访问密码,因为这意味着每个 .NET 应用程序都可以访问您的完整帐户信息。)
例如,WindowsIdentity.User被声明为对于所有 Windows NT 实现中的用户都是唯一的。(我相信这意味着在任何 Windows NT 实现中,这对于给定系统上的每个用户都是唯一的......但我不确定。)
如果客户端和服务器都在同一个域中,则不必指定用户名和密码。
如果您使用的是 HttpRequest,则应设置LogonUserIdentity。
如果您正在调用 SOAP 服务,您应该设置Credentials属性。