惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
S
Securelist
D
Docker
The Register - Security
The Register - Security
GbyAI
GbyAI
Recorded Future
Recorded Future
Engineering at Meta
Engineering at Meta
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
罗磊的独立博客
博客园 - 【当耐特】
F
Full Disclosure
WordPress大学
WordPress大学
腾讯CDC
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
SecWiki News
SecWiki News
L
Lohrmann on Cybersecurity
I
InfoQ
MyScale Blog
MyScale Blog
量子位
Cyberwarzone
Cyberwarzone
博客园 - 三生石上(FineUI控件)
The Hacker News
The Hacker News
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
博客园_首页
H
Help Net Security
K
Kaspersky official blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Webroot Blog
Webroot Blog
Blog — PlanetScale
Blog — PlanetScale
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
The Cloudflare Blog
P
Proofpoint News Feed
V
Visual Studio Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
爱范儿
爱范儿
P
Privacy International News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
B
Blog RSS Feed

博客园 - 家中慢步

AKShare 高频请求东财数据接口的异常问题及解决方案 quartz 2.2.1 jdbc 连接池参数配置 httpclient发送request请求时设置header和timeout redmine 安装roadmap 插件 centos 下自动备份redmine 数据 centos 5.6 安装redmine 步骤 解决mysql 写入中文读出乱码的问题 SVN的Redmine集成插件 Quartz.net Tutorial Lesson 2 RedMine 邮件通知配置 teamlab与redmine试用对比报告 Redmine集成LDAP认证 Redmine 初体验 jqgrid 属性说明 [原创]sql server inner join 效率测试 为sql server客户端连接添加别名 [转载]sql server T-SQL 区分字符串大小写 的两种方法 [转载]sql server 常用存储过程 Quartz.net Tutorial Lesson 1
Redmine 导入AD用户
家中慢步 · 2011-10-27 · via 博客园 - 家中慢步
  • 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();
}