ldif 数据转成正确的组织结构再探

简介: ldif 数据转成正确的组织结构再探

上次文章最后有说到按照之前的思路来转化组织结构是有坑的,我们现在还只是对接 AD域,ldap 协议的其他产品在细节上还会有些许不同

我们是不能直接粗暴的认为 cn 就是对应标识一个用户, cn 是 common name 的意思,他也可以表示我们理解的用户组

orgnizationalUnitcontainer 也可以是组的意思,但是对于 AD 域来说,在他们上面能够配置的属性有差别

那么对于同步组织结构,我们实际上是可以如何做的呢?不能粗暴的按照之前的方式来实现,我们可以如何实现?

先过滤组织

我们可以在 ldap 服务器中可以看到, cn 也可以是组的意思,cn 下面也可以是 ou

因此单单的通过 dn 是无法分辨出哪个 dn 代表的是组,哪个 dn 代表的是用户的

因此在 ldap 中,我们想要获取我们认为的组织结构,那么就需要有一定的方法

  • 先过滤组
  • 再过滤用户
  • 拼装整个组织结构

过滤组织

我们就可以使用例如这样的过滤条件:(|(objectClass=organizationalUnit)(objectClass=organizationalRole))

筛选出来的 dn 全部都是我们认为的组,根据之前的逻辑将这个组生成一棵树即可,是一棵多叉树

例如效果可能是这样的,先生成一棵树,树的基本雏形就有了

再过滤用户

过滤用户的时候 可以是这样的

(|(objectClass=Person)(objectClass=user))

当然,这些过滤用户都是可以自己修改的,只是我们的逻辑是,先过滤组,再过滤用户

我们过滤的用户可能有这些

我们这里要注意,这些用户不是所有都要挂到我们的树上面的,需要检验他们是不是我们期望的组

拼装整个组织结构

拼装之后,结果可能是这样的,新增的节点是对应的用户,蓝色的是我们正确加入组织结构里面的用户

橙色的也是我们通过上述 条件 (|(objectClass=Person)(objectClass=user)) 筛选出来的用户,但是不属于我们之前筛选的组里面的成员

因此,不能把 J 和 K 加入到我们的组织结构中

则最终我们的组织结构是这样的才对

对于编码的实现原理,和上一篇的类似,只是在生成树的时候需要调整一下即可,处理 DN 的时候,处理组的 DN 和 处理 用户的 DN 需要分开过滤,分开处理,最后做拼装

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关文章
|
容器 Cloud Native
ldif 数据转成正确的组织结构再探
上次文章最后有说到按照之前的思路来转化组织结构是有坑的,我们现在还只是对接 AD域,ldap 协议的其他产品在细节上还会有些许不同
|
存储 C#
【c#入门杂选】-显性转换,和隐形转换
【c#入门杂选】-显性转换,和隐形转换
141 0
【c#入门杂选】-显性转换,和隐形转换
|
运维 Kubernetes Cloud Native
一份不大的救命文档,一场时间与生死的接力
一份文档,能成为照亮黑暗的灯塔,打开一条求生通道。
992 0
一份不大的救命文档,一场时间与生死的接力
组织解码之四
组织建设为什么要有toC+toB思考,《首席组织官》
143 0
组织解码之二
系统的视角理解组织,《首席组织官》
152 0
组织解码之三
组织建设toB还是toC的选择,《首席组织官》
164 0
|
Java C语言 iOS开发
详解字符串拆、截、格式化之法 | 带你学《Java面向对象编程》之三十四
本节结合多组代码详细介绍了字符串拆分、截取与格式化相关的方法及其使用方法。
合伙人分开的一点思考
今天做事情有点效率低,中午没有休息好,其余时间稍微有点分心。想思考一下合伙之间的事情。 合伙人分开之后还能好好相处吗? 我觉得这个问题,能不能再朝上继续问一个问题,合伙人为什么要分开呢?相必肯定是相处之间有些未达到自己预期的地方,所以才会分开。
编码知识大杂烩:http://www.cnblogs.com/such/p/4383490.html
01我的GitHub地址:https://github.com/heizemingjun 我的博客园地址:http://www.cnblogs.com/chenmingjun 我的蚂蚁笔记博客地址:http://blog.
1114 0