LDAP服务搭建,phpLDAPadmin+python管理服务

LDAP 是什么?

LDAP(Lightweight Directory Access Protocol)是一种轻量级的目录访问协议。它最初是用于在 TCP/IP 网络上访问 X.500 目录服务,但由于其简单和高效的特点,现在广泛应用于企业、组织等系统中的身份验证、授权、信息管理等方面。

LDAP 的主要作用是在目录中查找和修改信息。目录可以视为一个包含了关于人员、组织、设备等信息的数据库**(可以理解为企业微信中的通讯录,就是一个树的结构)**。

LDAP 协议是一种面向客户端/服务器的协议,客户端通过发送操作请求(如添加、删除、查询等)到服务器,服务器通过返回操作结果(成功或失败等)给客户端。

LDAP 由一系列的 RFC(请求评论)文件定义,常用的有 RFC 1777、RFC 2251、RFC 4510 等。

LDAP中的概念

在 LDAP 里, 一切都是等级化的,或者称之为层级化(hiearchical)。

一棵树有树干,树枝和树叶;树叶长在树枝上,树枝依附于树干。这就是一个简单的层级结构。LDAP 的结构同一棵树类似。假设 LDAP 里存储的是公司的信息,那么可以把公司(company)本身理解为树干,公司里面的各个部门,比如组(group),理解为树干,把用户(user)理解为树叶。这样的结构称之为目录信息树(DIrectory Information Tree,DIT)
在这里插入图片描述

在LDAP中,dc、dn、cn、ou 等都是一些常用的名词,代表着不同的意思。

  • dc(Domain Component):表示域名(Domain Name)中的部分或全部组成部分。例如,dc=example,dc=com 表示组成平台的域名(example.com)。

  • dn(Distinguished Name):表示一个完整的条目(Entry)在 LDAP 树结构中的路径。它由多个 RDN (Relative Distinguished Name,相对区分名)组成,且从根节点开始到该条目的路径是唯一的。例如,表示用户 “cn=张三,ou=users,dc=example,dc=com” 表示这个用户位于组织单元 “users” 下,同时还是域名为 “example.com” 的整体树中的一个条目。

  • cn(Common Name):表示常用名称,通常用来表示条目的名称,可以是人的姓名、群组的名称等。例如,cn=xiaoming 表示一个名为 “xiaoming” 的条目。

  • ou(Organizational Unit):表示组织单元,可用来组织用户或其他条目。例如,ou=users 表示组织单元的名称为 “users”,它可以用来组织用户。

用公司来比喻,dc就是公司域名,dn就是从根节点到叶子节点的路径,ou是容器组织或者是部门,ou下看可以存放cn。
cn为终端节点内容,比如一个人即使一个cn。

除了上述名称外,LDAP 还包含了很多其他的属性和 ObjectClass(对象类),不同的 ObjectClass 定义和支持不同的属性。了解这些名称和属性可以帮助我们更好地设计和使用 LDAP 目录服务。

windows安装LDAP

https://www.cnblogs.com/eternality/archive/2023/08/22/17648094.html
在这里插入图片描述

docker安装LDAP

可以通过Docker Compose快速搭建LDAP服务。这里提供一个简单示例:

  1. 创建一个文件夹 ldap 并进入该文件夹。

  2. 创建 docker-compose.yaml 文件,并添加以下代码:

    version: '3'
    services:
      ldap:
        image: osixia/openldap
        ports:
          - 389:389
        environment:
          LDAP_ADMIN_PASSWORD: <your_password>
          LDAP_DOMAIN: <your_domain>
          LDAP_BASE_DN: <your_base_dn>
        volumes:
          - ldap-data:/var/lib/ldap
          - ldap-config:/etc/ldap/slapd.d
          - ldap-secrets:/run/secrets
        secrets:
          - ldap_admin_password
    
      phpLDAPadmin:
        image: osixia/phpldapadmin
        ports:
          - 6443:443
        environment:
          PHPLDAPADMIN_LDAP_HOSTS: ldap
        depends_on:
          - ldap
        secrets:
          - ldap_admin_password
    
    volumes:
      ldap-data:
      ldap-config:
      ldap-secrets:
    
    secrets:
      ldap_admin_password:
        file: ./ldap_admin_password
    
    

    主要修改文件中的password,domain,dn信息。
    在这里插入图片描述

  3. 在同级目录下,创建文件 ldap_admin_password ,并输入您想要设置的管理员密码。

  4. 运行 docker-compose up -d 命令,等待容器启动。
    在这里插入图片描述

  5. 访问 https://localhost:6443,使用管理员账户 cn=admin,<your_base_dn> 和设置的管理员密码,即可登录LDAP管理界面。
    在这里插入图片描述
    在这里插入图片描述

备注:

  • LDAP_DOMAIN:LDAP 的域名,例如 example.com
  • LDAP_BASE_DN:LDAP 的根目录,例如 dc=example,dc=com
  • LDAP_ADMIN_PASSWORD:管理员密码,需要在 ldap_admin_password 文件中设置。
  • PHPLDAPADMIN_LDAP_HOSTS:LDAP 服务器的地址,这里填写 ldap,可以通过 Docker 容器名进行访问。
  • LDAP_ADMIN_PASSWORD:这个 secret 会以文件的形式被注入到容器中的环境变量,以安全地存储密码。

管理工具

在windows安装连接里给了3个工具,可以用,我这里直接使用docker安装的phpldapadmin。

phpLDAPAdmin使用

https://blog.51cto.com/u_14049791/5714604
phpLDAPadmin 是一个基于 Web 的 LDAP 管理工具,用于管理 LDAP 服务器。使用它,可以浏览 LDAP 树、查看 LDAP 架构、执行搜索、创建、删除、复制和编辑 LDAP 条目。甚至可以在服务器之间复制条目。

登录

首先登录信息要写对,密码是搭建设置的。
在这里插入图片描述

entry

在LDAP里,每个ou,cn,都是enter,条目.
Entry是指目录管理的基本单元,通常表示一个条目或记录。每个Entry都有一个唯一的标识名(Distinguished Name,DN),用于表示该条目在LDAP目录树中的位置。条目可以是用户、组、组织或其他实体,它们在目录中被表示为条目。

条目是LDAP中的基本对象,对LDAP的增删改查都是以Entry为基本单元进行操作的。通过操作Entry,可以实现用户的创建、删除、修改和查询等操作

创建ou

创建一个名为school的ou
在这里插入图片描述
通过模板选择该entry属于什么,这里选择OU,说明是一个组织。
在这里插入图片描述
在这里插入图片描述

创建组

选中school,选中Create a child entry,选中Generic: Posix Group,输入group名,点击create object
在这里插入图片描述
在这里插入图片描述

创建用户

选中Users,create child entry,选中Generic: User Account,输入信息,选所属组为student
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

python连接ldap

安装ldap3模块
官方文档:https://ldap3.readthedocs.io/en/latest/tutorial_searches.html

  • 连接LDAP服务器,需要配置为自己的服务器,端口,和密码,users
import ldap3

# 连接到LDAP服务器
server = ldap3.Server('服务器IP:端口')
conn = ldap3.Connection(server, user='cn=admin,dc=example,dc=com', password='password')
conn.bind()
  • 查询Users下objectclass为organizationalUnit
    在这里插入图片描述

# 执行查询
conn.search('ou=Uses,dc=example,dc=com', '(objectclass=organizationalUnit)')

# 打印查询结果
for entry in conn.entries:
    print(entry.entry_dn)

# 断开连接
conn.unbind()



只能查到它自己
在这里插入图片描述
如果要查询Users下面的cn,可以输入如下一个属性objectclass
conn.search(‘ou=Uses,dc=example,dc=com’, ‘(objectclass=inetOrgPerson)’)
在这里插入图片描述

在这里插入图片描述

  • 创建一个组织条目
conn.add('ou=ldap3-tutorial,dc=example,dc=com', 'organizationalUnit')

可以看到新增了一个ou
在这里插入图片描述

  • 添加一个新的用户
conn.add('cn=b.young,ou=ldap3-tutorial,dc=example,dc=com', 'inetOrgPerson', {'givenName': 'Beatrix', 'sn': 'Young', 'departmentNumber': 'DEV', 'telephoneNumber': 1111})

在这里插入图片描述
需要注意,python执行后,phpldapadmin需要重新退出重登才能看到修改内容。
可以看到后面的字典是给cn添加的属性。
其他操作可见:https://ldap3.readthedocs.io/en/latest/tutorial_operations.html#create-an-entry

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/110974.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

车载网关产品解析(附:车载网关详细应用案例及部署流程)

5G车载网关是一款功能强大的工业级无线通讯设备。它集成了4G/5G双模网络模块、M12接口设计、强大的路由和安全功能等特性,可以为车载和移动应用提供稳定可靠的无线数据连接。 链接直达&#xff1a;https://www.key-iot.com/iotlist/sv900.html ### 产品特性 5G车载网关最大的…

链游风暴再起?MBOX即将再度起飞

近期链游再次进入了我们的视野&#xff0c;Play To Earn在21年大放异彩之后经过了2年沉寂近期终于有了再度爆发的征兆&#xff0c;不管是前段时间爆拉7倍的YGG&#xff0c;还是近期一路高歌猛进的MC都已经吹响了链游板块即将冲锋的信号&#xff0c;那么近期还有哪些值得关注的链…

【PyQt学习篇 · ②】:QObject - 神奇的对象管理工具

文章目录 QObject介绍Object的继承结构测试QObject对象名称和属性QObject对象名称和属性的操作应用场景 QObject父子对象QObject父子对象的操作 QObject的信号与槽QObject的信号与槽的操作 QObject介绍 在PyQt中&#xff0c;QObject是Qt框架的核心对象之一。QObject是一个基类…

(a /b)*c的值

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

从歌尔股份三季报中,读懂消费电子的“增程式”复苏

第三季度财报季前夕&#xff0c;消费电子板块可谓利好不断。 9月&#xff0c;苹果、华为纷纷发布新品&#xff0c;大厂高端机型带动购机热潮重现。同时&#xff0c;Meta推出的MR头显Quest3、智能眼镜Ray-Ban等XR新产品也备受消费者期待&#xff0c;大摩预测Quest 3今年出货量将…

MES 的价值点之动态调度

随着数字化技术的发展&#xff0c;为制造企业的生产计划提供了更多的便利。但在实际生产管理过程中&#xff0c;企业的生产计划不管做的多么理想&#xff0c;还是可能会因诸多的扰动因素造成执行与计划差异&#xff0c;这时就需要通过一些动态调整方案去适应新的生产要求与环境…

基于标签的电影推荐算法研究_张萌

&#xff12; 标签推荐算法计算过程 &#xff12;&#xff0e;&#xff11; 计算用户对标签的喜好程度 用户对一个标签的认可度可以使用二元关系来表示&#xff0c;这种关系只有“是”“否”两种结果&#xff0c;实际上难以准确地表达出用 户对物品的喜好程度。因此&#x…

通讯网关软件031——利用CommGate X2HTTP实现HTTP访问ODBC数据源

本文介绍利用CommGate X2HTTP实现HTTP访问ODBC数据源。CommGate X2HTTP是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;实现上位机通过HTTP来获取ODBC数据源的数据。 【解决方案】设置网关机…

docker环境安装+maven依赖继承问题

1&#xff0c;docker环境安装 我们使用yum指令进行安装&#xff0c;分别cmd运行&#xff1a; yum install -y yum-utils device-mapper-persistent-data lvm2 yum-contig-manager --add-repo https://download.docker.com/linux/centos/docker-ce.rep具体解释如下&#xff1a;…

Java基于SpringBoot的线上考试系统

1 摘 要 基于 SpringBoot 的在线考试系统网站&#xff0c;功能模块具有课程管理、成绩管理、教师管理、学生管理、考试管理以及基本信息的管理等&#xff0c;通过将系统分为管理员、授课教师以及学生&#xff0c;从不同的身份角度来对用户提供便利&#xff0c;将科技与教学模式…

表白墙(服务器)

目录 0.需求 1.创建Maven项目 2.给pom.xml内引入三个依赖 3.完善目录&#xff0c;并补充web.xml中的内容 4.编写代码 后端代码 ​编辑前端代码 5.引入数据库 创建message表 创建工具类 往MessageServlet类中添加方法 0.需求 前面写好了表白墙页面&#xff0c;但存…

你知道HashMap有几种吗?不要只会用最简单的奥!

这秋意是越来越近了&#xff0c;这思念就开始泛滥… 在 Java 中&#xff0c;有多种哈希映射&#xff08;HashMap&#xff09;的实现&#xff0c;每种都有不同的特点和适用场景。以下是几种常见的哈希映射实现&#xff1a; HashMap&#xff1a; 介绍&#xff1a;HashMap 是 Java…

操作系统备考学习 day11 (4.1.1~4.1.9)

操作系统备考学习 day11 第四章 文件管理4.1文件系统基础4.1.1 文件的基本概念文件的属性文件的逻辑结构操作系统向上提供的功能文件如何存放在外存 4.1.2 文件的逻辑结构顺序文件索引文件索引顺序文件 4.1.3 文件目录文件控制块单级目录结构两级目录结构多级目录结构 又称树形…

【mysql】单表数据量过大解决方案

文章目录 背景问题方案数据库冷热数据分离方案 背景 包装码表单表数据量很大&#xff0c;造成查询瓶颈&#xff1b;目前单表数据量达到3000w&#xff0c;单表字段数16 问题 索引膨胀&#xff0c;查询耗时长&#xff0c;影响正常CRUD … 方案 ● 分区 按日期…范围&#x…

5000张照片怎么快速发给别人?分享三个简单的方法!

有的时候我们不得不一次性发送很多图片&#xff0c;一张一张发实在让人头疼&#xff0c;这个时候就需要借助一些图片压缩工具打包成文件压缩包发送。下面介绍了三种好用的方法&#xff0c;一起来看看吧&#xff5e; 方法一&#xff1a;使用微信助手 可以使用微信助手&#xff…

Python接口自动化测试—— requests框架

1.前言 Python内置的urllib模块&#xff0c;也可以用于访问网络资源。但是&#xff0c;它用起来比较麻烦&#xff0c;而且&#xff0c;缺少很多实用的高级功能。因此我们使用 requests 模块进行进行接口测试。 requests官方文档资料地址&#xff1a;http://cn.python-request…

浙江爱知道控股集团,数字化经营的实践者,科技降本增效,助力基业长青

拥抱时代浪潮&#xff0c;加速科技变革。10月27日&#xff0c;浙江爱知道控股集团于西子智慧产业园西子音乐厅举办“AIGC可持续发展峰会”&#xff0c;重点探讨了数字化经营的重要意义。 提高效率和降低成本&#xff1a;数字化经营可以优化和自动化企业的业务流程&#xff0c;提…

Linux Spug自动化运维平台公网远程访问

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台&#xff0c;整合了主机管理、主机批量执行、主机在线终端、文件…

Web自动化测试进阶 —— Selenium模拟鼠标操作

鼠标操作事件 在实际的web产品测试中&#xff0c;对于鼠标的操作&#xff0c;不单单只有click()&#xff0c;有时候还要用到右击、双击、拖动等操作&#xff0c;这些操作包含在ActionChains类中。 ActionChains类中鼠标操作常用方法&#xff1a; 首先导入ActionChains类&…

手机apn介绍

公司遇到一件很棘手的事情&#xff0c;app发版之后&#xff0c;长江以北地方的用户网络信号很好&#xff0c;但是打开app之后网络连接不上&#xff0c;而长江以南的用户网络却很好。大家找了很多资料&#xff0c;提出一些方案&#xff1a; 1、是不是运营商把我们公司的ip给限制…