章工运维 章工运维
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

章工运维

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • linux

  • windows

  • 中间件

  • 网络

  • 安全

  • 存储

  • 防火墙

  • 数据库

  • 系统

    • vmware

    • ftp

    • nexus

    • harbor

    • confluence&jira

    • loki

    • sonarqube

    • svn

    • other

    • openldap

      • openldap介绍和安装
        • go-ldap-admin平台安装
        • 集成zabbix,jenkins,gitlab,jumpserver,harbor,jira,confluence实战
        • openldap配置自助修改密码
      • influxdb

      • wordpress

      • kvm

      • argocd

      • jfrog

      • nextcloud

      • RustDesk

      • mail

      • ghost

    • docker

    • other

    • 监控

    • 运维
    • 系统
    • openldap
    章工运维
    2023-05-27
    目录

    openldap介绍和安装

    # 什么是ldap

    LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。按照我们对文件目录的理解,ldap可以看成一个文件系统,类似目录和文件树。

    # ldap的软件

    ldap并不是一款软件,而是一个协议。

    现在市场上有关LDAP的产品已有很多,各大软件公司都在他们的产品中集成了LDAP服务,如Microsoft的ActiveDirectory、Lotus的Domino Directory、IBM的WebSphere中也集成了LDAP服务。LDAP的开源实现是OpenLDAP,它比商业产品一点也不差,而且源码开放。

    OpenLDAP 是最常用的目录服务之一,它是一个由开源社区及志愿者开发和管理的一个开源项目,提供了目录服务的所有功能,包括目录搜索、身份认证、安全通道、过滤器等等。大多数的 Linux 发行版里面都带有 OpenLDAP 的安装包。OpenLDAP 服务默认使用非加密的 TCP/IP 协议来接收服务的请求,并将查询结果传回到客户端。由于大多数目录服务都是用于系统的安全认证部分比如:用户登录和身份验证,所以它也支持使用基于 SSL/TLS 的加密协议来保证数据传送的保密性和完整性。OpenLDAP 是使用 OpenSSL 来实现 SSL/TLS 加密通信的。

    # ldap的信息模型

    【重要部分】

    LDAP的信息模型是建立在"条目"(entries)的基础上。一个条目是一些属性的集合,并且具有一个全局唯一的"可区分名称"DN,一个条目可以通过DN来引用。每一个条目的属性具有一个类型和一个或者多个值。类型通常是容易记忆的名称,比如"cn"是通用名称(common name) ,或者"mail"是电子邮件地址。条目的值的语法取决于属性类型。比如,cn属性可能具有一个值"Babs Jensen" 。一个mail属性可能包含"bbs@kevin.com" 。一个jpegphoto属性可能包含一幅JPEG(二进制)格式的图片。

    LDAP的objectClass

    LDAP通过属性objectClass来控制哪一个属性必须出现或允许出现在一个条目中,它的值决定了该条目必须遵守的模式
    规则。可以理解为关系数据库的表结构。接下来会用到的objectClass有

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

    LDAP常用关键字列表

    ldap的entry是由各种字段构成,可以理解为关系数据库的字段。

    关键字 英文全称 含义
    dc Domain Component 域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com
    uid User Id 用户ID,如“tom”
    ou Organization Unit 组织单位,类似于Linux文件系统中的子目录,它是一个容器对象,组织单位可以包含其他各种对象(包括其他组织单元),如“market”
    cn Common Name 公共名称,如“Thomas Johansson”
    sn Surname 姓,如“Johansson”
    dn Distinguished Name 惟一辨别名,类似于Linux文件系统中的绝对路径,每个对象都有一个惟一的名称,如“uid= tom,ou=market,dc=example,dc=com”,在一个目录树中DN总是惟一的
    rdn Relative dn 相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=tom”或“cn= Thomas Johansson”
    c Country 国家,如“CN”或“US”等。
    o Organization 组织名,如“Example, Inc.”

    这里,我们把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是全局唯一的,
      认证通常需要进行两次。原因就在于dn没办法根据用户名计算出来。

    一个ldap用户组织可能是这样的:

    5f94e33412256cdc.png

    2fbc00ddd2f18cd7.jpg

    ee22e4946a2c7ea6.png

    # ldap使用docker compose安装

    version: "3"
    services:
      # 1.安装openldap
      openldap:
        container_name: openldap
        image: docker.mirrors.sjtug.sjtu.edu.cn/osixia/openldap:1.4.0
        restart: always
        environment:
          LDAP_ORGANISATION: "9quant openldap"
          LDAP_DOMAIN: "9quant.com"
          LDAP_ADMIN_PASSWORD: "123456"
          LDAP_CONFIG_PASSWORD: "123456"
        volumes:
          - /data/openldap/data:/var/lib/ldap
          - /data/openldap/slapd.d:/etc/ldap/slapd.d
        ports:
          - '389:389'
      # 2.安装phpldapadmin
      phpldapadmin:
        container_name: phpldapadmin
        image: docker.mirrors.sjtug.sjtu.edu.cn/osixia/phpldapadmin:0.9.0
        restart: always
        environment:
          PHPLDAPADMIN_HTTPS: "false"
          PHPLDAPADMIN_LDAP_HOSTS: openldap
        ports:
          - '30004:80'
        depends_on:
          - openldap
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    微信 支付宝
    上次更新: 2023/05/27, 18:13:40

    ← 使用 Arpl 在线编译群晖引导 go-ldap-admin平台安装→

    最近更新
    01
    shell脚本模块集合
    05-13
    02
    生活小技巧(认知版)
    04-29
    03
    生活小技巧(防骗版)
    04-29
    更多文章>
    Theme by Vdoing | Copyright © 2019-2025 | 点击查看十年之约 | 鄂ICP备2024072800号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式