直接看域登录核心代码
//需要引用System.DirectoryService.dll
//name域管理员账号,key域管理员密码,ldapPath:域路径比如:LDAP://baidu.com
DirectoryEntry entry = new DirectoryEntry(ldapPath,name,key);
try
{
DirectoryUserInfo user = null;
//ldapId 域用户登录名
DirectorySearcher searcher = new DirectorySearcher(entry, string.Format("(&(objectCategory=user)(sAMAccountName={0}))", ldapId));
searcher.PropertiesToLoad.Add("cn");
searcher.PropertiesToLoad.AddRange(new string[] { "memberof", "cn", "description", "name", "Mail", "samaccountname", "whencreated", "title", "department" });
SearchResultCollection src = searcher.FindAll();
if (src == null)
return user;
foreach (SearchResult result in src)
{
if (result != null)
{
string n = (result.GetDirectoryEntry().Properties["distinguishedName"].Value == null) ? string.Empty : result.GetDirectoryEntry().Properties["distinguishedName"].Value.ToString();
if (n.IndexOf("OU") != -1)
{
//DirectoryUserInfo 是自己定义的一个类,用来存储域信息的
user = new DirectoryUserInfo();
if (result.GetDirectoryEntry().InvokeGet("samaccountname") != null)
user.LdapUserId = result.GetDirectoryEntry().InvokeGet("samaccountname").ToString();
if (result.GetDirectoryEntry().InvokeGet("Description") != null)
user.LdapUserName = result.GetDirectoryEntry().InvokeGet("Description").ToString();
if (result.GetDirectoryEntry().InvokeGet("Mail") != null)
user.LdapEmail = result.GetDirectoryEntry().InvokeGet("Mail").ToString();
if (result.GetDirectoryEntry().InvokeGet("department") != null)
user.LdapDepartmentName = result.GetDirectoryEntry().Properties["department"].Value.ToString();
if (result.GetDirectoryEntry().InvokeGet("title") != null)
user.LdapTitle = result.GetDirectoryEntry().Properties["title"].Value.ToString();
}
}
}
return user;
}
catch (Exception ex)
{
LogHelper.CreateErrorLog(string.Format("PSI:补偿Ldap-{0}信息-{1}", ldapId, ex.Message));
return null;
}
finally
{
entry.Close();
}