openldap(一):简介和安装

news/2024/7/26 10:28:25/文章来源:https://blog.csdn.net/dl_11/article/details/137279269

目录

  • 1 OpenLDAP简介
    • 1.1 LDAP介绍
      • 1、什么LDAP
      • 2、为什么要使用LDAP
      • 3、LDAP 的特点
      • 4、LDAP常用关键字
      • 5、LDAP的objectClass
      • 6、LADP使用场景
    • 1.2 OpenLDAP介绍
      • 1、什么OpenLDAP
      • 2、OpenLDAP特点
      • 3、OpenLDAP的组件
  • 2 OpenLDAP安装
  • 3 简单使用
    • 3.1 创建用户
      • 1、创建ou
      • 2、创建Group
  • 3、创建User Account
      • 4、 为用户填写其他属性

1 OpenLDAP简介

1.1 LDAP介绍

1、什么LDAP

LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是一种用于访问分布式目录服务的网络协议。它提供了一种标准化的方法来查询和操作目录中的信息,这些信息通常以树状结构组织,用于存储用户、组织和其他实体的数据。

2、为什么要使用LDAP

LDAP是开放的Internet标准,市场上或者开源社区的绝大多数软件都支持LDAP协议。简单来说,LDAP协议最大的好处就是能统一管理用户密码,如果有新人报道,只需要创建一个用户就能登录公司的所有平台(gitlab、jumpserver、监控等等),离职时一键删除即可。

3、LDAP 的特点

LDAP有如下特定:

  • 1.目录结构:LDAP 目录是树状结构组织,每个节点称为条目(Entry),每个条目包含属性(Attributes)。
  • 2.基于标准的协议:LDAP 遵循一系列 RFC(Request for Comments)文档,确保了不同系统间的兼容性和互操作性。
  • 3.分层命名空间:LDAP 使用分层的命名空间(称为 Distinguished Names, DN),用于唯一标识目录中的每个条目。
  • 4.搜索和访问控制:LDAP 提供了强大的搜索功能,允许用户根据属性值查询条目。同时,它支持复杂的访问控制机制,以保护目录数据的安全。
  • 5.可扩展性:LDAP 支持通过添加新的条目和属性来扩展目录结构,同时保持向后兼容性。

4、LDAP常用关键字

  • dn(Distinguished Name):区分名称,LDAP中每个条目都有自己的dn,dn是该条目在整棵树中的唯一标识,如同文件系统中,带路径的文件名就是DN。
  • rdn(Relative dn):相对区别名称,好比linux中的相对路径。
  • dc(Domain Component):域名组件。其格式是将完整的域名分成几部分,如将http://example.com变成dc=example,dc=com。
  • uid(User ID):用户ID,如 san.zhang。
  • ou(Organization Unit):组织单元。
  • cn(Common Name):公共名称。
  • sn(surname):姓氏。
  • c(Country):国家,如“CN”或者“US”。
  • o(Organization):组织名,如XXX银行,XXX部门,XXX公司等等。
    这里把dn当做用户唯一主键, cn是common name,应该等同于用户名,因为用户名必须唯一,通常为邮箱前缀,比如ryan.miao. sn作为姓氏, uid作为用户id。通常用户id也是唯一的。所以在使用ldap做认证的时候,大概逻辑如下:
  • 配置ldap host, admin, admin pass
  • 用户登录时传递username
  • 读取配置的ldap信息,查询cn或者uid等于username的数据
  • 取出第一个记录, 获得dn, 根据dn和password再次去ldap服务器认证。即必须保证cn或uid是全局唯一的

5、LDAP的objectClass

objectClass含义
olcGlobal全局配置文件类型, 主要是cn=config.ldif 的配置项
top顶层的对象
organization组织,比如公司名称,顶层的对象
organizationalUnit重要, 一个目录节点,通常是group,或者部门这样的含义
inetOrgPerson重要, 我们真正的用户节点类型,person类型, 叶子节点
groupOfNames重要, 分组的group类型,标记一个group节点olcModuleList配置模块的对象

6、LADP使用场景

LDAP 通常用于以下场景:

  • 身份验证:验证用户身份,允许或拒绝对系统资源的访问。
  • 授权:管理用户权限,控制对目录数据的访问。
  • 目录服务:存储和检索关于用户、组织结构和其他实体的信息。
  • 单点登录(SSO):作为身份提供者,允许用户使用一组凭据访问多个相关但独立的系统。

1.2 OpenLDAP介绍

1、什么OpenLDAP

OpenLDAP 是 LDAP 协议的一个开源实现,由 OpenLDAP 项目提供。它包括服务器、客户端库、工具和示例应用程序,用于构建和操作 LDAP 目录服务。OpenLDAP 可以运行在多种操作系统上,包括 Linux、Unix、Windows 等。

2、OpenLDAP特点

OpenLADP的特点如下:

  • 1.开源:OpenLDAP 是开源软件,可以自由下载、使用和修改。
  • 2.跨平台:OpenLDAP 可以在多种操作系统上运行,包括 Linux、Unix、Windows 等。
  • 3.灵活性:OpenLDAP 支持自定义模式(Schemas),允许管理员定义新的数据类型和对象类,以满足特定的业务需求。
  • 4.安全性:OpenLDAP 支持多种安全机制,包括 TLS/SSL 加密、SASL 认证等,确保数据传输的安全性。
  • 5.性能:OpenLDAP 经过优化,能够处理大量的并发访问和复杂的搜索操作。
  • 6.工具和库:OpenLDAP 提供了一系列工具和库,方便开发者集成和操作 LDAP 服务。

3、OpenLDAP的组件

OpenLDAP有四个主要组件:

  • slapd -独立的LDAP守护进程和相关的模块和工具
  • lloadd—独立的LDAP负载均衡代理服务器
  • 实现LDAP协议和ASN.1基本编码规则的库
  • 客户端软件:ldapsearch、ldapadd、ldapdelete等

此外,OpenLDAP项目还有许多子项目:

  • Java 的LDAP类库
  • JDBC-LDAP - Java JDBC-LDAP桥接驱动
  • ldapc++ -用于c++的LDAP类库
  • 内存映射数据库库

2 OpenLDAP安装

环境:Ubuntu 22.04
使用docker安装

mkdir ldap
cd ldapvim docker-compose.yaml
#######
version: '2'
services:openldap:image: osixia/openldap:1.5.0  ### 如果有私有仓库可以从自己的私有仓库拉取镜像container_name: openldaprestart: alwaysenvironment:LDAP_LOG_LEVEL: "256"LDAP_ORGANISATION: "test"   ### 您的组织名称LDAP_DOMAIN: "smile.test"    ### 公司域名LDAP_BASE_DN: "dc=smile,dc=test"   ### 根据域名组成LDAP_ADMIN_PASSWORD: "smile123"   ### 密码自己来设置LDAP_CONFIG_PASSWORD: "smile123"LDAP_READONLY_USER: "false"#LDAP_READONLY_USER_USERNAME: "readonly"#LDAP_READONLY_USER_PASSWORD: "readonly"LDAP_RFC2307BIS_SCHEMA: "false"LDAP_BACKEND: "mdb"#LDAP_TLS: "true"#LDAP_TLS_CRT_FILENAME: "smile.test.pem"#LDAP_TLS_KEY_FILENAME: "smile.test.key"#LDAP_TLS_DH_PARAM_FILENAME: "dhparam.pem"#LDAP_TLS_CA_CRT_FILENAME: "ca.crt"#LDAP_TLS_ENFORCE: "false"#LDAP_TLS_CIPHER_SUITE: "SECURE256:-VERS-SSL3.0"# LDAP_TLS_VERIFY_CLIENT: "demand"LDAP_REPLICATION: "false"#LDAP_REPLICATION_CONFIG_SYNCPROV: 'binddn="cn=admin,cn=config" bindmethod=simple credentials="$$LDAP_CONFIG_PASSWORD" searchbase="cn=config" type=refreshAndPersist retry="60 +" timeout=1 starttls=critical'#LDAP_REPLICATION_DB_SYNCPROV: 'binddn="cn=admin,$$LDAP_BASE_DN" bindmethod=simple credentials="$$LDAP_ADMIN_PASSWORD" searchbase="$$LDAP_BASE_DN" type=refreshAndPersist interval=00:00:00:10 retry="60 +" timeout=1 starttls=critical'#LDAP_REPLICATION_HOSTS: "#PYTHON2BASH:['ldap://ldap.example.org','ldap://ldap2.example.org']"KEEP_EXISTING_CONFIG: "false"LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"#LDAP_SSL_HELPER_PREFIX: "ldap"tty: truestdin_open: truevolumes:- /opt/openldap/ldap:/var/lib/ldap- /opt/openldap/slapd.d:/etc/ldap/slapd.d- /opt/openldap/certs:/container/service/lapd/assets/certsports:- "389:389"- "636:636"# For replication to work correctly, domainname and hostname must be# set correctly so that "hostname"."domainname" equates to the# fully-qualified domain name for the host.domainname: "smile.test"hostname: "ldap-server"phpldapadmin:image: osixia/phpldapadmin:latestcontainer_name: phpldapadminrestart: alwaysenvironment:PHPLDAPADMIN_LDAP_HOSTS: "openldap"   ### 如果部署后登录不进去有可能是这里出了问题,直接换为部署openldap服务的公网IP试试PHPLDAPADMIN_HTTPS: "false"ports:- "50081:80"depends_on:- openldapself-service-password:container_name: self-service-passwordimage: tiredofit/self-service-password:latestrestart: alwaysports:- "50080:80"environment:- LDAP_SERVER=ldap://openldap:389- LDAP_BINDDN=cn=admin,dc=smile,dc=test- LDAP_BINDPASS=XXXX- LDAP_BASE_SEARCH=dc=smile,dc=test- MAIL_FROM=it@open.com- MAIL_FROM_NAME=账号自助服务平台- SMTP_DEBUG=0- SMTP_HOST=smtp.qiye.aliyun.com- SMTP_USER=it@open.com- SMTP_PASS=jYda52VZ8Ftw1111- SMTP_PORT=465- SMTP_SECURE_TYPE=ssl- SMTP_AUTH_ON=true- NOTIFY_ON_CHANGE=truevolumes:- /etc/localtime:/etc/localtime- /opt/openldap/self-service-password/htdocs:/www/ssp- /opt/openldap/self-service-password/logs:/www/logsdeploy:resources:limits:memory: 2Greservations:memory: 512M### 运行
docker-compose up -d

登录地址:ip:50081
用户名:LDAP_BINDDN cn=admin,dc=smile,dc=test
密码:LDAP_ADMIN_PASSWORD
在这里插入图片描述
在这里插入图片描述

3 简单使用

3.1 创建用户

这里先在dc下面创建一个ou=group和一个ou=person。暂时先不按部分区分,如果想再按部分区分则就先创建一个ou,再在该ou下创建一个ou=group即可。

1、创建ou

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

提交后可以看到如下:
在这里插入图片描述

创建 group 和 person 两个ou

2、创建Group

在ou=group下创建dev
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、创建User Account

在ou=people下创建用户
在这里插入图片描述
在这里插入图片描述

4、 为用户填写其他属性

为用户添加真实姓名和邮箱(有些系统需要用户的这两个信息!比如gitlab)
在这里插入图片描述
在这里插入图片描述

再添加一个属性,此时选择:Email
在这里插入图片描述

配置完成后的效果:
在这里插入图片描述

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

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

相关文章

CrossOver软件2024免费 最新版本详细介绍 CrossOver软件好用吗 Mac电脑玩Windows游戏

CrossOver是一款由CodeWeavers公司开发的软件,它可以在Mac和Linux等操作系统上运行Windows软件,而无需在计算机上安装Windows操作系统。这款软件的核心技术是Wine,它是一种在Linux和macOS等操作系统上运行Windows应用程序的开源软件。 Cross…

SpringBoot整合腾讯云邮件发送服务非STMP

SpringBoot整合腾讯云邮箱服务 1、pom配置 <!-- 腾讯云邮箱服务--><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><!-- go to https://search.maven.org/search?qtencen…

Gmail多账号防封攻略,看这一篇就够了

您的业务活动需要多个 Gmail 帐户吗&#xff1f;出海畅游&#xff0c;Gmail账号是少不了的工具之一&#xff0c;可以关联到Twitter、Facebook、Youtube、Chatgpt等等平台&#xff0c;可以说是海外网络的“万能锁”。但是大家都知道&#xff0c;以上这些平台注册多账号如果产生关…

【OpenCV】 OpenCV (C++) 与 OpenCvSharp (C#) 之间数据通信

OpenCV是一个基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;同时提供了Python、Ruby、MATLAB等语…

设计定时任务实现数据同步的最佳实践

✨✨ 祝屏幕前的您天天开心&#xff0c;每天都有好运相伴。我们一起加油&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一、选择合适的定时任务框架 Quartz Spring 的 TaskScheduler JDK 的 ScheduledE…

商品服务 - 三级分类

1.递归查询树形结构 Overridepublic List<CategoryEntity> listWithTree() {//1.查出所有分类List<CategoryEntity> all this.list();//2.组装成父子的属性结构List<CategoryEntity> level1Menus all.stream().filter(c -> c.getParentCid().equals(0L)…

【Java初阶(七)】接口

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; 目录 1.前言2.接口2.1语法规则2.2接口使用2.3接口特性2.4实现多个接口2.5接口使用实例2.6Clonable接口和深拷贝 3.Object类3.1对象比较equals方法3.2hashcod…

基于B/S快递取件预约系统设计与实现【Java毕业设计·安装调试·代码讲解·文档报告】

&#x1f34a;作者&#xff1a;北友舰长 &#x1f34a;简介&#xff1a;从事毕业论文代写&#xff0c;计算机毕业设计定制&#xff0c;Java程序开发&#xff0c;可定制化项目、 项目源码、代码讲解、文档撰写、ppt制作等等 &#x1f345; 文末获取源码联系 &#x1f447;&#…

【pytest、playwright】多账号同时操作

目录 方案实现思路&#xff1a; 方案一&#xff1a; 方案二&#xff1a; 方案实现思路&#xff1a; 依照上图所见&#xff0c;就知道&#xff0c;一个账号是pytest-playwright默认的环境&#xff0c;一个是 账号登录的环境 方案一&#xff1a; 直接上代码&#xff1a; imp…

沃尔玛百货有限公司 企业网页设计制作 企业html网页成品 跨国公司网页设计开发 web前端开发,html+css网页设计素材,静态html学生网页成品源码

沃尔玛百货有限公司 WalMart 7页面 企业主题 带jquery图片轮播特效 滚动文字 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.or…

【核心复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略

目录 主要内容 内容详情 1.问题引出 2.可控负荷 3.网络拓扑约束 4.算法流程 结果一览 1.原文结果 2.程序运行结果 下载链接 主要内容 该模型复现文章《同时考虑考虑孤岛与重构的配电网故障恢复运行策略》&#xff0c;以IEEE33配电网为分析对象&#xff0c;…

Java复习第九天学习笔记(集合框架),附有道云笔记链接

【有道云笔记】九 3.26 集合框架 https://note.youdao.com/s/TLZg8ip0 一、简介 ArrayList: 有序(放进去顺序和拿出来顺序一致)&#xff0c;可重复 HashSet: 无序(放进去顺序和拿出来顺序不一定一致)&#xff0c;不可重复 Test public void test1() { //数组最大问题是长度固…

区块链食品溯源案例实现(二)

引言 随着前端界面的完成&#xff0c;我们接下来需要编写后端代码来与区块链网络进行交互。后端将负责处理前端发送的请求&#xff0c;调用智能合约的方法获取食品溯源信息&#xff0c;并将结果返回给前端。 通过前后端的整合&#xff0c;我们可以构建一个食品溯源系统&#xf…

【详细讲解Android Debug Bridge各种命令及用法的文章】

&#x1f525;博主&#xff1a;程序员不想YY啊&#x1f525; &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f4ab; &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 &#x1f308;希望本文对您有所裨益&#xff0c;如有…

JDK |SDK |JRE 的区别

转自&#xff1a;【JVM与性能调优】JDK入门知识&#xff0c;别再说你分不清JRE、JDK、SDK三者的区别了_jdk sdk-CSDN博客 1.JDK体系结构 2.三者区别

ASR-LLM-TTS 大模型对话实现案例;语音识别、大模型对话、声音生成

参考:https://blog.csdn.net/weixin_42357472/article/details/136305123(llm+tts) https://blog.csdn.net/weixin_42357472/article/details/136411769 (asr+vad) 这里LLM用的是chatglm;电脑声音播报用的playsound 1、实时语音识别版本 注意:暂时这项目有个缺陷就是tts…

SQLBolt,一个练习SQL的宝藏网站

知乎上有人问学SQL有什么好的网站&#xff0c;这可太多了。 我之前学习SQL买了本SQL学习指南&#xff0c;把语法从头到尾看了个遍&#xff0c;但仅仅是心里有数的程度&#xff0c;后来进公司大量的写代码跑数&#xff0c;才算真真摸透了SQL&#xff0c;知道怎么调优才能最大化…

精彩解读:短链接应用全方位探究

title: 精彩解读&#xff1a;短链接应用全方位探究 date: 2024/4/2 17:44:50 updated: 2024/4/2 17:44:50 tags: 短链接定义映射算法原理简洁美化优势工作流程解析安全隐私保护商业营销应用技术趋势发展 1. 短链接的定义和原理 短链接是一种将长网址转换为短网址的服务&#…

红米手机Redmi 不会自动弹出USB调试选项,如何处理?(红米小米均适用)

参考&#xff1a; 红米手机Redmi 不会自动弹出USB调试选项&#xff0c;如何处理&#xff1f;&#xff08;红米小米均适用&#xff09; - 知乎 以红米9A为例&#xff1b; 【设置】菜单进入后&#xff0c;找到【我的设备】&#xff0c; 选择【全部参数】&#xff0c; 对准miui版…

双按键IP对讲终端SV-6002D功能简介

ip语音双向对讲系统高速路求助对讲终端 IP对讲终端SV-6002D双按键是一款采用了ARMDSP架构&#xff0c;接收网络音频流&#xff0c;实时解码播放&#xff1b;配置了麦克风输入和扬声器输出&#xff0c;SV-6002D带两路寻呼按键&#xff0c;可实现对讲、广播等功能&#xff0c;作为…