zoukankan      html  css  js  c++  java
  • Redmine 导入AD用户

    • Redmine集成LDAP认证的前提是需要在系统中建立域用户,为此实现了一个从Ad中获取用户并初始化到Redmine的功能。
    • 功能设计  

    • 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();
    }


  • 相关阅读:
    在win2003中发布部署vs2010b2写的mvc2网站
    安装blender2.5Alpha0
    Win7下虚拟机个人使用小结:Virtual PC,VMware和VirtualBox
    ASP.NET AJAX Control Toolkit Beta 0911 发布[再增两控件]
    Camtasia 6录屏时鼠标闪烁问题解决
    为XNA制做安装程序(四)WIX Toolset 3.0 for Visual Studio 2008
    Oracle EM 12c
    无题
    从徐汇到虹口
    近况
  • 原文地址:https://www.cnblogs.com/snowlove67/p/2226779.html
Copyright © 2011-2022 走看看