关于后端:ldif-数据转成正确的组织结构再探

19次阅读

共计 1019 个字符,预计需要花费 3 分钟才能阅读完成。

上次文章最初有说到依照 之前的思路来转化组织构造是有坑的,咱们当初还只是对接 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 须要离开过滤,离开解决,最初做拼装

欢送点赞,关注,珍藏

敌人们,你的反对和激励,是我保持分享,提高质量的能源

好了,本次就到这里

技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。

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

正文完
 0