openldap(一):简介和安装

目录

  • 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.mzph.cn/news/788209.shtml

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

相关文章

剑指offer打卡 JZ10 斐波那契数列

在牛客网刷的,还是跟leetcode一样非acm模式,由于急着暑期实习题量不固定,八股算法轮刷 打卡内容偏个人笔记,本人水平一般(代码随想录稀里糊涂刷了一遍),从小白开始分析(甚至会分析语法),尽量一题多解深入探…

NoSQL(非关系型数据库)之Redis的简介与安装

一、简介 1.1 关系型数据库与非关系型数据库 1.1.1 概念 1.1.2 区别 1.2 非关系型数据库产生背景 1.3 redis 简介 1.4 redis 优点 1.5 redis 快的原因 二、安装 2.1 关闭核心防护 2.2 安装相关依赖 2.3 解压软件包并进行编译安装 2.4 设置 Redis 服务所需相关配置文…

2024年最便宜的VPS云服务器推荐

要寻找最便宜的VPS(Virtual Private Server 虚拟专用服务器)服务,您应该关注那些提供较低定价计划的知名和可靠的服务提供商。以下是一些在过去的信息中提及过的较为便宜或性价比较高的VPS提供商: 更多内容:https://ww…

网络编程详解(select poll epoll reactor)

1. 客户端服务器建立连接过程 1.1 编写一个server的步骤是怎么样的? int main(){int listenfd, connfd;pid_t childpid;socklen_t clilen;struct sockaddr_in cliaddr, servaddr;listenfd socket(AF_INET, SOCK_STREAM, 0);bzero(&servaddr, sizeof(servaddr…

Java基础核心Map

在Java中,Map是一种用于存储键值对(key-value pairs)的集合类型。它提供了一种将键映射到值的方式,其中每个键在Map中都是唯一的。Map接口是java.util包中的一部分。 常用实现类: HashMap: 基于哈希表实现的Map&#…

设计一个Rust线程安全栈结构 Stack<T>

在Rust中&#xff0c;设计一个线程安全的栈结构Stack<T>&#xff0c;类似于Channel<T>&#xff0c;但使用栈的FILO&#xff08;First-In-Last-Out&#xff09;原则来在线程间传送数据&#xff0c;可以通过使用标准库中的同步原语如Mutex和Condvar来实现。下面是一个…

JavaScript发票查验接口如何集成?返回错误的信息原因是什么呢?

发票查验的过程中&#xff0c;很可能出现各种各样的问题&#xff0c;那么返回错误信息的原因一般可能是因为以下几种原因&#xff1a;第一种是接口没有调通&#xff0c;第二种是本身发票就是一张错票、假票&#xff0c;第三种可能是税局系统或网络问题等等&#xff0c;如果在使…

AI大模型学习:跨越技术与业务的桥梁

前言 在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已逐渐渗透到我们生活的各个角落&#xff0c;其中AI大模型学习更是成为了引领技术革新的重要力量。然而&#xff0c;要想真正驾驭这一技术&#xff0c;研究者不仅需要具备扎实的数学基础和编程能力&a…

6、Cocos Creator 2D 渲染组件:​Sprite 组件​

Sprite 组件 Sprite&#xff08;精灵&#xff09;是 2D/3D 游戏最常见的显示图像的方式&#xff0c;在节点上添加 Sprite 组件&#xff0c;就可以在场景中显示项目资源中的图片。 属性功能说明Type渲染模式&#xff0c;包括普通&#xff08;Simple&#xff09;、九宫格&#x…

网易云首页单页面html+css

网页设计与网站建设作业htmlcss 预览 源码查看https://hpc.baicaitang.cn/2083.html

Java | Leetcode Java题解之第4题寻找两个正序数组的中位数

题目&#xff1a; 题解&#xff1a; class Solution {public double findMedianSortedArrays(int[] A, int[] B) {int m A.length;int n B.length;if (m > n) { return findMedianSortedArrays(B,A); // 保证 m < n}int iMin 0, iMax m;while (iMin < iMax) {int…

linux shell命令(进程管理、用户管理)

一、进程的概念 主要有两点&#xff1a; 1.进程是一个实体。每一个进程都有它自己的地址空间&#xff0c;一般情况下&#xff0c;包括文本区域&#xff08;text region&#xff09;、数据区域&#xff08;data region&#xff09;和堆栈&#xff08;stack region&#xff09;…

Visual Studio 2022报错c1083,win11解决办法

如果头文件报错&#xff0c;并且编译器报错是c1083&#xff0c;无法处理的时候&#xff0c;包括卸载重装也是无济于事的时候 此时可以采取一下办法进行修改 出现这个的主要原因是安装 Windows SDK 时版本出错&#xff0c;需要根据自己的 windows 版本选择安装对应版本的 Wind…

ASTM C1186-22 纤维水泥平板

以无石棉类无机矿物纤维、有机合成纤维或纤维素纤维&#xff0c;单独或混合作为增强材料&#xff0c;以普通硅酸盐水泥或水泥中添加硅质、钙质材料代替部分水泥为胶凝材料&#xff0c;经制浆、成型、蒸汽或高压蒸汽养护制成的板材&#xff0c;俗称水泥压力板。 ASTM C1186-22纤…

SpringBoot+ECharts+Html 地图案例详解

1. 技术点 SpringBoot、MyBatis、thymeleaf、MySQL、ECharts 等 此案例使用的地图是在ECharts社区中查找的&#xff1a;makeapie echarts社区图表可视化案例 2. 准备条件 在mysql中创建数据库echartsdb&#xff0c;数据库中创建表t_location_count表&#xff0c;表中设置两个…

实验5-2:判断字符类别(多分支结构)

实验5-2&#xff1a;判断字符类别&#xff08;多分支结构&#xff09; 编写一个程序&#xff0c;其功能为&#xff1a;从键盘输入一个字符ch&#xff0c;判别该字符的类别&#xff0c;并输出向相应信息。 如果输入的字符介于A-Z之间&#xff0c;输出"Its a uppercase let…

Redis底层数据库之SDS

高速的存储介质&#xff1a;内存优秀的底层数据结构高效的IO模型高效的线程模型 1. 动态字符串SDS Redis中保存的Key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字符串是redis中最常用的一种数据结构。 C语言种字符串存在的一些问题&#xff1a; 获取字符…

代码随想录刷题day42| 01背包理论基础分割等和子集

文章目录 day41学习内容一、 01背包之二维数组解法1.1、什么是01背包1.2、动态规划五部曲1.2.1、 确定dp数组&#xff08;dp table&#xff09;以及下标的含义1.2.2、确定递推公式1.2.3、 dp数组如何初始化1.2.4、确定遍历顺序1.2.5、计算并返回最终结果 二、 01背包之一维数组…

C++经典面试题目(十九)

1、什么是析构函数&#xff1f;它有什么作用&#xff1f; 析构函数是类的特殊成员函数&#xff0c;用于在对象被销毁时执行清理工作。它的名称与类名相同&#xff0c;前面加上波浪号&#xff08;~&#xff09;。析构函数的作用在于确保在对象被销毁时释放占用的资源&#xff0…

【嵌入式智能产品开发实战】(十四)—— 政安晨:通过ARM-Linux掌握基本技能【链接静态库与动态库】

目录 链接静态库 动态链接 与地址无关的代码 全局偏移表 延迟绑定 共享库 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 嵌入式智能产品开发实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论…