使用ASP.NET获取Active Directory信息,无需用户名和密码

我试图从ASP.NET Web应用程序获取用户在本地网络上的Active Directory信息。 Web应用程序正在本地网络上的IIS上运行。

我想要的:当用户登录网站时,他们可以从Active Directory中看到他们的姓名,用户名,电子邮件和图片。 问题是,当他们进入他们的网站时,Web应用程序要求输入用户名和密码。 用户在打开PC时已经输入了用户名和密码。 所以他们不应该再做一次。

用户使用其用户名和密码登录PC。 我可以获得域名和用户名:

 string adInfo = Request.ServerVariables["LOGON_USER"]; 

我还可以在测试System.DirectoryServices时在我的本地PC上获取Active Directory信息,但是当其他用户在本地尝试此Web应用程序时,会出现用户名和密码对话框。

如何才能使用户无需输入用户名和密码即可进入其网站?

我在这里尝试了所有样品,但我找不到任何解决方案。 我想我错过了一些重要的事情。

您需要为您的网站使用Windows身份validation模式。

        

…然后在当前用户的上下文中使用LDAP查询来获取有关用户的扩展信息:

 using System.DirectoryServices; using (var de = new DirectoryEntry("LDAP://DC=MYDOMAIN,DC=COM")) using (var ds = new DirectorySearcher(de)) { ds.Filter = string.Format("(sAMAccountName={0})", HttpContext.Current.User.Identity.Name); ds.PropertiesToLoad.AddRange(new [] { "sn", // last name "givenName", // first name "mail", // email "telephoneNumber", // phone number // etc - add other properties you need }); var res = ds.FindOne(); foreach (string propName in res.Properties.PropertyNames) { ResultPropertyValueCollection valueCollection = res.Properties[propName]; foreach (Object propertyValue in valueCollection) { Console.WriteLine("Property: " + propName + ": " + propertyValue.ToString()); } } } 

嘿,这是一个建议,而不是回答你的问题。 浏览器永远不会允许您绕过他们的安全系统。 所以用户名和密码框是不可避免的。 我要说的是从用户那里获取用户名,姓名和所有你想要的东西,并将其保存在一个有很长失效日期的cookie中。 因此,下次用户登录时,请阅读该cookie并显示您想要的内容。 如果需要,为他们提供更改选项。

这是大多数时候都应该工作的最佳解决方案。