Go-Ldap-Admin Go-Ldap-Admin
首页
  • 产品概述
  • 安装入门
  • 参与贡献
  • 最佳实践

    • 动态字段关系管理
    • 配置钉钉同步
    • 配置企业微信同步
    • 配置企业飞书同步
  • 常见问题
版本历史
  • openLDAP
捐赠支持
在线体验 (opens new window)
GitHub (opens new window)
首页
  • 产品概述
  • 安装入门
  • 参与贡献
  • 最佳实践

    • 动态字段关系管理
    • 配置钉钉同步
    • 配置企业微信同步
    • 配置企业飞书同步
  • 常见问题
版本历史
  • openLDAP
捐赠支持
在线体验 (opens new window)
GitHub (opens new window)
  • 产品概述

    • 关于go-ldap-admin
    • 平台功能概览
    • 关于修改密码的方法以及说明
  • 安装入门

    • docker-compose在本地快速拉起测试环境
    • 生产环境原生部署流程
    • 本地开发指南
    • 快速开始
    • CentOS7 安装 Go-Ldap-Admin
  • 参与贡献

    • 问题反馈
  • 最佳实践

    • ldap用户以及分组的设计思路
      • 初始数据
      • 用户的设计
      • 分组的设计
      • 最后
    • 动态字段关系管理
    • 配置钉钉同步
    • 配置企业微信同步
    • 配置飞书同步
    • 三方IM数据同步调试
  • 常见问题

    • 问题汇总摘要
    • 如何将ldap中的basedn更改为自己定义的
    • 如何自定义秘钥对儿
    • 如何备份
  • 项目相关
  • 最佳实践
二丫讲梵
2022-06-14
目录

ldap用户以及分组的设计思路

ldap对于没有接触过的人而言,想要入门、使用、精通,无疑是有一些难度的,这也是我个人学习历程中的一个体会,因此这个项目在底层设计上,有意针对用户与分组管理进行了简化与固化,本文即是准备把这些设计做一个分享,以便于使用的朋友们在应用本项目的时候,做到心中有数。

首先来说,ldap的灵活性非常强,也没有所谓适应一切的标准金线,因此我所思考并设计的未必是适合所有人的,但绝对是适用于大部分人的,如果你的确有场景是当下设计无法满足的,可以另外再沟通,或者这个设计你觉得糟糕透了,那请马上关闭这个项目,而不必再耗费你的精力。

接下来进入本项目设计思路的具体分享。

# 初始数据

要能够接入本平台,首先需要有如下初始数据:

# DC
dc=eryajf,dc=net

# 管理员
cn=admin,dc=eryajf,dc=net

# 用户的组织
ou=people,dc=eryajf,dc=net

# 分组的组织
ou=dingtalkroot,dc=eryajf,dc=net
ou=feishuroot,dc=eryajf,dc=net
ou=wecomroot,dc=eryajf,dc=net
1
2
3
4
5
6
7
8
9
10
11
12
13

这些数据是项目能够与ldap成功交互的基础,如果你的ldap部署之后,通过phpldapadmin查看的时候,没有这些数据,或者与这些数据不一致,那极大可能会在使用过程中遇到未知问题,我觉得这是没有必要的。

如果你通过项目提供的docker-compose方案进行部署,那么ldap在启动之后,会自动加载初始化的配置文件 (opens new window),启动之后看起来应该是这个样子:

image_20230220_162759

  • 注意管理员尽可能命名是admin,如果你非要用Manager,可能会有问题。

# 用户的设计

其实也是比较简单的,go-ldap-admin约定所有的用户全部放在 ou=people,dc=eryajf,dc=net 之下,亦即,叫张三的同学,他的DN应该是 uid=zhangsan,ou=people,dc=eryajf,dc=net。

在这个地方有不少人为为什么用户不用cn这个属性来标识呢,即:cn=zhangsan,ou=people,dc=eryajf,dc=net,关于这个我不做过多的讨论,约定了uid就是uid,并没有太多为什么。

如果你的用户组织没有明确在配置文件 (opens new window)的user-dn当中,那么你后续对分组与用户的增删改查都无法顺畅走通,请务必注意这一点。

# 分组的设计

分组在系统中也可以理解为组织架构,上边初始化的三个是对应的钉钉,飞书,企业微信,如果你完全没有IM数据同步到本地的需求,那么可以忽略这三个组织,甚至可以直接删掉,然后创建符合自己公司情况的组织以及分组。

在分组这里,我们预设了两种属性,ou与cn,有不少人问起过这两个的区别是什么:

简单一句话讲就是,ou无法添加人,cn下可以添加人,使用的建议是,顶级的菜单建议使用ou,往下的知道里边会有人的可以使用cn。

分组的应用也非常广泛,其实在某些时候,分组也可以作为一个权限区隔的依据。

# 最后

有不少同学问到过我,如何支持某某某属性或者方案,其实如上设计已经能够满足你的使用需求,我也着实没有更多精力来满足一些个性化的需求场景了。

帮助我们改善此页面 (opens new window)
上次更新: 2023/03/31, 22:25:48
问题反馈
动态字段关系管理

← 问题反馈 动态字段关系管理→

Theme by Vdoing | Copyright © 2022-2023 Eryajf | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式