检测使用ASP.NET应用程序登录计算机的用户

我想开发一个ASP.NET应用程序,可以检测登录Window Domain的用户。 这些凭据将用于登录ASP.NET应用程序。

我怎样才能做到这一点?

谢谢!

在IIS中,启用集成Windows身份validation,并在代码中,如果您使用:

Request.ServerVariables["LOGON_USER"] 

它将返回登录用户的Windows用户名,即MYDOMAIN \ MYUSERNAME

对于ASP.net,您可以使用

 HttpContext.Current.User.Identity 

如果IIS配置正确(至少没有匿名登录)

这是我用来对Active Directory进行身份validation的C#代码

 using System; using System.DirectoryServices; namespace XYZcompany.Enterprise { public class AuthenicationMgr { private static readonly int AD_ERR_LOGON_FAIL = -2147023570; private static readonly string _path = "LDAP://xxx.yyy.ggg"; private static readonly string _domain = "xxx.yyy.ggg"; public static bool IsAuthenticated(string username, string pwd) { bool authenticatedFlag = true; string domainAndUsername = _domain + "\\" + username; DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, pwd); try { // Bind to the native AdsObject to force authentication. Object obj = entry.NativeObject; DirectorySearcher search = new DirectorySearcher(entry); search.Filter = "(SAMAccountName=" + username + ")"; search.PropertiesToLoad.Add("cn"); SearchResult result = search.FindOne(); if (result == null) { authenticatedFlag = false; } else { authenticatedFlag = true; } } catch (System.Runtime.InteropServices.COMException ex) { if (ex.ErrorCode == AD_ERR_LOGON_FAIL) { authenticatedFlag = false; } else { throw new ApplicationException("Unable to authenticate user due to system error.", ex); } } return authenticatedFlag; } } } 

您应该查看活动目录成员资格提供程序。 它内置于ASP.NET中。

 System.Security.Principal.WindowsIdentity.GetCurrent().User.ToString