使用Windows身份验证使用C#登录到站点

时间:2020-03-06 14:22:32  来源:igfitidea点击:

我想使用当前登录用户的Windows身份验证登录到程序内部的服务器。我认为也许可以使用

System.Security.Principal.WindowsIdentity.GetCurrent()。Name

但是虽然确实提供了一个名称,但是我看不到如何找到要输入用户密码的用户。

解决方案

我们无法获取密码。我们需要使用模拟来将身份传递给我们尝试连接的服务器。

除非用户将密码提供给应用程序,否则我们将无法使用其密码进行基本登录。我们必须根据本地登录的用户进行某种形式的模拟或者委托权限。

在web.config中:

<system.web>
        <authentication mode="Windows" />
        <identity impersonate="true"/>
  </system>

如果要使用Windows用户身份验证,则可能应该使用其中一部分比简单的用户名/密码组合更安全的部分。 (而且可能无法访问密码,因为这意味着每个.NET应用程序都可以访问完整帐户信息。)

例如,对于所有Windows NT实现,WindowsIdentity.User对于用户而言都是唯一的。 (我相信这意味着在任何Windows NT实施中,这对于给定系统上的每个用户都是唯一的……但是我不确定。)

绝对没有办法获取Windows用户的密码,因为Windows甚至不存储它(所有存储的都是不可逆的哈希)。

如果客户端和服务器都在同一个域中,则不必指定用户名和密码。

如果使用HttpRequest,则应设置LogonUserIdentity。

如果要调用SOAP服务,则应设置Credentials属性。