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

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

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

image.png

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

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

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

先过滤组织

image.png

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

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

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

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

过滤组织

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

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

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

image.png

再过滤用户

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

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

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

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

image.png

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

拼装整个组织结构

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

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

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

image.png

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

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


欢迎点赞,关注,收藏

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

image.png

好了,本次就到这里

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

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

相关文章
|
Cloud Native 容器
ldif 数据转成正确的组织结构再探
ldif 数据转成正确的组织结构再探
|
22小时前
|
存储 算法 搜索推荐
【C++面向对象——群体类和群体数据的组织】实现含排序功能的数组类(头歌实践教学平台习题)【合集】
1. **相关排序和查找算法的原理**:介绍直接插入排序、直接选择排序、冒泡排序和顺序查找的基本原理及其实现代码。 2. **C++ 类与成员函数的定义**:讲解如何定义`Array`类,包括类的声明和实现,以及成员函数的定义与调用。 3. **数组作为类的成员变量的处理**:探讨内存管理和正确访问数组元素的方法,确保在类中正确使用动态分配的数组。 4. **函数参数传递与返回值处理**:解释排序和查找函数的参数传递方式及返回值处理,确保函数功能正确实现。 通过掌握这些知识,可以顺利地将排序和查找算法封装到`Array`类中,并进行测试验证。编程要求是在右侧编辑器补充代码以实现三种排序算法
16 5
|
8月前
|
缓存 NoSQL Java
大型生鲜系统库存负数问题解决方法:技术选型与实际应用
大型生鲜系统库存负数问题解决方法:技术选型与实际应用
69 0
|
前端开发 JavaScript Java
内容管理-易错重难点
项目的模块架构理解 在我们做项目之前首先要对项目的模块结构有一个基本的了解,放一张我做的结构图: 注意点: 我们将依赖版本管理和依赖管理分为两个工程,而不是放在一个工程中,这样的话可以子模块可以选择性的继承,而不会太重 parent工程:对整个项目的依赖包版本进行管理 base工程:提供基础类库、工具类库等(继承parent工程,从而也纳入版本管理) content工程是一个聚合工程,不需要依赖,所以我们让它继承于parent工程拿到依赖版本即可 在content微服务工程中,我们可以发现api工程和service工程都依赖于model工程,那么我们就不需要让api、service、m
48 0
|
前端开发
前端工作总结124-数组转换为对象项目案例
前端工作总结124-数组转换为对象项目案例
130 0
前端工作总结124-数组转换为对象项目案例
|
存储
《C游记》 第陆章 - 数据类型悟正法 解析存储定风魔(壹)
《C游记》 第陆章 - 数据类型悟正法 解析存储定风魔(壹)
156 0
相亲软件开发,与数据加载相关的三个层次的思考
相亲软件开发,与数据加载相关的三个层次的思考
组织解码之六
问面试官什么问题可以了解到企业真正的文化,《首席组织官》
106 0
组织解码之五
你见过“伪”高管吗?《首席组织官》
137 0
组织解码之三
组织建设toB还是toC的选择,《首席组织官》
169 0

热门文章

最新文章

下一篇
开通oss服务