BitAdminCore为没有自主开发框架的小团队,提供快速项目搭建及开发能力。

框架演示:http://bit.bitdao.cn

框架源码:https://github.com/chenyinxin/cookiecutter-bitadmin-core


不解释,直接上代码

         //配置以下四个参数,开放389端口。
string domainName = "bitdao.cn";
string domainRoot = "组织单位";
string domainUser = "user";
string domainPass = "password";
   public ActionResult Sync()
{
try
{
//连接域
DirectoryEntry domain = new DirectoryEntry();
domain.Path = string.Format("LDAP://{0}", domainName);
domain.Username = domainUser;
domain.Password = domainPass;
domain.AuthenticationType = AuthenticationTypes.Secure;
domain.RefreshCache(); DirectoryEntry entryOU = domain.Children.Find("OU=" + domainRoot);
DirectorySearcher mySearcher = new DirectorySearcher(entryOU, "(objectclass=organizationalUnit)"); //查询组织单位
DirectoryEntry root = mySearcher.SearchRoot; //查找根OU if (root.Properties.Contains("ou") && root.Properties.Contains("objectGUID"))
{
string rootOuName = root.Properties["ou"][].ToString();
byte[] bGUID = root.Properties["objectGUID"][] as byte[];
Guid id = new Guid(bGUID); departments.Add(new SysDepartment() { DepartmentId = id, DepartmentCode = id.ToString(), DepartmentName = rootOuName, DepartmentFullName = rootOuName }); SyncSubOU(root, id);
} //入库
foreach (var d in departments)
{
var department = dbContext.SysDepartment.Find(d.DepartmentId);
if (department == null)
dbContext.SysDepartment.Add(d);
else
{
department.DepartmentName = d.DepartmentName;
department.DepartmentFullName = d.DepartmentFullName;
department.ParentId = d.ParentId;
}
dbContext.SaveChanges();
}
foreach (var u in users)
{
var user = dbContext.SysUser.Find(u.UserId);
if (user == null)
{
u.CreateBy = u.UserId;
u.CreateTime = DateTime.Now;
dbContext.SysUser.Add(u);
}
else
{
user.UserCode = u.UserCode;
user.UserName = u.UserName;
user.DepartmentId = u.DepartmentId;
user.Mobile = u.Mobile;
user.Email = u.Email;
user.UpdateBy = u.UserId;
user.UpdateTime = DateTime.Now;
}
dbContext.SaveChanges();
} return Json(new { Code = , Msg = "同步成功!" });
}
catch (Exception ex)
{
LogHelper.SaveLog(ex);
return Json(new { Code = , Msg = "服务器异常,请联系管理员!" });
}
} List<SysUser> users = new List<SysUser>();
List<SysDepartment> departments = new List<SysDepartment>(); private void SyncSubOU(DirectoryEntry entry, Guid parentId)
{
foreach (DirectoryEntry subEntry in entry.Children)
{
string entrySchemaClsName = subEntry.SchemaClassName; string[] arr = subEntry.Name.Split('=');
string categoryStr = arr[];
string nameStr = arr[]; byte[] bGUID = subEntry.Properties["objectGUID"][] as byte[];
Guid id = new Guid(bGUID); switch (entrySchemaClsName)
{
case "organizationalUnit":
departments.Add(new SysDepartment() { DepartmentId = id, ParentId = parentId, DepartmentCode = id.ToString(), DepartmentName = nameStr, DepartmentFullName = nameStr }); SyncSubOU(subEntry, id);
break;
case "user":
users.Add(new SysUser()
{
UserId = id,
UserCode = subEntry.Properties["samaccountName"][].ToString(),
DepartmentId = parentId,
UserName = subEntry.Properties["displayName"][].ToString(),
Email = subEntry.Properties.Contains("mail") ? subEntry.Properties["mail"][].ToString() : "",
Mobile = subEntry.Properties.Contains("telephoneNumber") ? subEntry.Properties["telephoneNumber"][].ToString() : ""
}); break;
}
}
}

NETCore 同步AD域组织和用户的更多相关文章

  1. NETCore调用AD域验证

    一.添加引用 System.DirectoryServices System.DirectoryServices.AccountManagement 二.验证代码 声明域 string domainN ...

  2. JAVA 通过LDAP获取AD域用户及组织信息

    因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...

  3. SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)

    由于SharePoint 2013推出不久,并非所有的企业都会升级到SharePoint 2013的,毕竟升级不是打打补丁这么简单,更多的企业还是使用Sharepoint 2010版本的,因此本人自行 ...

  4. SharePoint 2013中修改windows 活动目录(AD)域用户密码的WebPart(免费下载)

    前段时间工作很忙,好久没更新博客了,趁国庆休假期间,整理了两个之前积累很实用的企业集成组件,并在真正的大型项目中经受住了考验:.Net版SAP RFC适配器组件和SharePoint 2013修改AD ...

  5. java集成微软的ad域,实现单点登录

    1.ad域介绍: windos server 2008R2服务器下的ad域,见下图(我是在虚拟机安装到windos server) 2.连接ad域代码:(里面代码自行修改) public Result ...

  6. java修改AD域用户密码使用SSL连接方式

    正常情况下,JAVA修改AD域用户属性,只能修改一些普通属性, 如果要修改AD域用户密码和userAccountControl属性就得使用SSL连接的方式修改, SSL连接的方式需要操作以下步骤: 1 ...

  7. gitlab用户登录与AD域用户集成

    ---恢复内容开始--- 编辑gitlab.rb文件 sudo vi /etc/gitlab/gitlab.rb 下图是我编辑的内容示例(仅供参考): 编辑以下内容: gitlab_rails['ld ...

  8. 配置Windows server dhcp与AD域对接并使用Win1创的用户登录Win2

    创建两台windows_server_2012 创建步骤链接(https://www.cnblogs.com/zhengyan6/p/16338084.html) 注意:所有虚拟机都要在同意网段 配置 ...

  9. 如何查看/统计当前AD域控制器的活动用户?

    最近公司想知道某台AD域控制器上当前连接了多少活动用户? 此前个人只知道以下不是非常完善且统计起来比较麻烦的方法: 方法1:查看共享会话数.(不完全准确) 方法2:查看当前的DNS记录.(这种方法统计 ...

随机推荐

  1. C#直接解析Json键值对

    string test_json = "{\"name\":\"tom\",\"nickname\":\"tony\&q ...

  2. vs2015 新特性

    vs2015 新特性 自动属性的增强 http://www.kwstu.com/ArticleView/manong_201411200854239378

  3. .NET高级软件工程师面试题排行榜(转载)

    原文引用:https://m.sanwen8.cn/p/104gMSd.html 一.对于 Web 性能优化,您有哪些了解和经验吗? 出现指数:五颗星 主要考点:这道题是博主在博客园的新闻里面看到的, ...

  4. tr th td

    <table>     <caption></caption>     <thead>         <tr>             & ...

  5. HDFS NameNode HA 部署文档

    简介: HDFS High Availability Using the Quorum Journal Manager Hadoop 2.x 中,HDFS 组件有三个角色:NameNode.DataN ...

  6. HBase实验(CRUD和MR入库)

    目录 前期准备 在HBase shell中实现CRUD操作 1. 启动命令行客户端 2. 创建表 3. 删除.新增列族 4. 删除表teacher 5. 新增数据 6. 查看数据 用Java API实 ...

  7. Redis Set命令

    [Redis Set命令] SET key value [EX seconds] [PX milliseconds] [NX|XX] 将字符串值 value 关联到 key . 如果 key 已经持有 ...

  8. 110. Balanced Binary Tree (Tree; DFS)

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  9. 6-Ubuntu与Windows不能相互复制

    在安装Ubuntu系统后发现与Windows系统的文件不能相互复制,网上查了很多教程,发现都是不能用的,能实现的方法如下所示: 第一步: sudo apt-get autoremove open-vm ...

  10. Code First 之类继承

    关于Entity Framework 的code first 模式,相信大家都不陌生了.本文就来看看实体继承在 codefirst里的用法. 第一步  添加 code first 的环境 这里为了方便 ...