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


  • 相关阅读:
    lambda函数用法
    Appium基础篇-元素定位
    python生成测试报告
    jmeter 设置中文
    jmeter bin下常用目录
    高效求幂运算
    欧几里德算法(求最大公因数)
    二分查找
    最大子序列和问题
    秋游小记
  • 原文地址:https://www.cnblogs.com/snowlove67/p/2226779.html
Copyright © 2011-2022 走看看