使用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属性。