Redmine 导入AD用户
2011-10-27 16:44
99 查看
Redmine集成LDAP认证的前提是需要在系统中建立域用户,为此实现了一个从Ad中获取用户并初始化到Redmine的功能。
[b]功能设计[/b][b] [/b]
AD账户读取
定义Model
查询AD对象
将AD对象转换为Model
Redmine数据写入
[b]功能设计[/b][b] [/b]
AD账户读取
定义Model
public class ADUserModel { public string UserId { get; set; } public string UserName { get; set; } public string Email { get; set; } }
查询AD对象
public static List<ADUserModel> GetAllDomainUserInfo() { List<ADUserModel> infolist = new List<ADUserModel>(); string[] properties = new string[] { "fullname" }; System.DirectoryServices.DirectoryEntry adRoot = new System.DirectoryServices.DirectoryEntry("LDAP://" + PrimaryDomainName, DomainUser, DomainPassword, AuthenticationTypes.Secure); System.DirectoryServices.DirectorySearcher mySearcher = new System.DirectoryServices.DirectorySearcher(adRoot); mySearcher.Filter = "(objectClass=*)"; mySearcher.PropertiesToLoad.Clear(); SearchResultCollection searchResultCollection = null; try { searchResultCollection = mySearcher.FindAll(); infolist = VisitSearchResultCollection(searchResultCollection); } catch { // 处理异常 } return infolist; }
将AD对象转换为Model
private static List<ADUserModel> VisitSearchResultCollection(SearchResultCollection resultCollection) { List<ADUserModel> domainlist = new List<ADUserModel>(); StringBuilder html = new StringBuilder(); foreach (SearchResult result in resultCollection) { string userName = string.Empty; string displayName = string.Empty; string distinguishedName = string.Empty; ADUserModel info = new ADUserModel(); if (result.Properties.Contains("samaccountname")) { ResultPropertyValueCollection resultValue = result.Properties["samaccountname"]; if (resultValue != null && resultValue.Count > 0 && resultValue[0] != null) { info.UserId = resultValue[0].ToString(); info.Email = info.UserId + "@aa.com"; } } if (result.Properties.Contains("mail")) { ResultPropertyValueCollection resultValue = result.Properties["mail"]; if (resultValue != null && resultValue.Count > 0 && resultValue[0] != null) { info.Email = info.UserId + "@aa.com"; } } if (result.Properties.Contains("displayname")) { ResultPropertyValueCollection resultValue = result.Properties["displayname"]; if (resultValue != null && resultValue.Count > 0 && resultValue[0] != null) { info.UserName = resultValue[0].ToString(); } } if (!string.IsNullOrEmpty(info.UserId)) { domainlist.Add(info); } } return domainlist; }
Redmine数据写入
using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.AppSettings["redmineconn"])) { conn.Open(); using (MySqlTransaction tran = conn.BeginTransaction() as MySqlTransaction) { try { foreach (ADUserModel adUser in adUserList) { RedUserDal.Instance.InsertUser(adUser, conn, tran); } tran.Commit(); } catch (Exception ex) { tran.Rollback(); Logger.Error(ex.Message); } } conn.Close(); conn.Dispose(); }
相关文章推荐
- AD下批量导入"域用户"
- 批量(导入导出)迁移AD中的用户信息和密码到新环境中,同时保持用户在MOSS中的权限【addusers,ldifde,copypwd,UserInfo,tp_SystemID】
- AD下批量导入"域用户"
- 批量(导入导出)迁移AD中的用户信息和密码到新环境中,同时保持用户在MOSS中的权限【addusers,ldifde,copypwd,UserInfo,tp_SystemID】
- 使用CSVDE命令批量导入/导出AD用户
- AD 批量导入用户
- SharePoint自动化部署,利用PowerShell 导入用户至AD——PART II
- 使用CSVDE命令批量导入/导出AD用户
- Windows Server 2008 R2 AD导入大批量的用户账户
- SharePoint自动化部署,利用PowerShell 导出/导入AD中的用户
- PowerShell 批量导入AD域用户
- 用Excel函数简化批量导入AD用户及修改密码
- 巧用Excel函数,简化批量导入AD用户及密码修改 推荐
- 如何将用户在AD中照片导入到SharePoint User Profile?
- 使用PowerShell New-ADUser 指令批量导入用户到AD数据库乱码问题
- AD下批量导入"域用户"
- SharePoint自动化部署,利用PowerShell 导入用户至AD——PART II
- 巧用Excel函数,简化批量导入AD用户及密码修改
- AD下批量导入"域用户"