LDAP-轻量目录访问协议

image.png

简介

LDAP是 Lightweight Directory Access Protocol的缩写,称为“轻量级目录访问协议”。它是一种在IP网络上访问和维护目录信息服务的应用层网络协议。

LDAP基本概念

  • dn(Distinguished Name)

    区分名称,LDAP中每个条目都有自己的dn,dn是该条目在整棵树中的唯一标识,如同文件系统中,带路径的文件名就是DN。

  • dc(Domain Component)

    域名组成。其格式是将完整的域名分成几部分,如将example.com变成dc=example,dc=com。

  • uid(User ID)

    用户ID,通常指某个用户的登录名,如biao.yang。

  • ou(Organization Unit)

    组织单元。

  • cn(Common Name):公共名称。

  • sn(surname):姓氏。

  • c(Country):国家,如“CN”或者“US”。

  • o(Organization):组织名称。

传统命名的 LDAP 目录树示例

image.png

基于域的命名的 LDAP 目录树示例

image.png

实现

LDAP的开源实现

OpenLDAP

开源、跨平台的LDAP实现,支持LDAP v2和v3,是最流行的开源LDAP项目之一。

389 Directory Server

由Red Hat发起的开源LDAP目录服务,性能好,适合大规模部署。

Apache Directory Server

Apache软件基金会的纯Java LDAP目录服务。

OpenDJ

由Sun开发,后来移交到ForgeRock。支持LDAP和X.500协议。

互联网公司使用最多的开源LDAP实现是OpenLDAP。例如Google就是使用OpenLDAP来存储账户信息的。OpenLDAP稳定、性能好、文档丰富,社区活跃是其被广泛采用的主要原因。

案例

docker+openLDAP+phpLDAPadmin

安装OpenLDAP

Docker镜像:https://github.com/osixia/docker-openldap

1
2
3
4
5
6
7
docker run -d \  
-p 389:389 -p 636:636 \
--name openldap-container \
--env LDAP_ORGANISATION="ldap" \
--env LDAP_DOMAIN="example.com" \
--env LDAP_ADMIN_PASSWORD="123456" \
osixia/openldap
1
2
Login DN: cn=admin,dc=example,dc=com
Password: 123456

安装phpLDAPadmin

phpLDAPadmin :https://github.com/osixia/docker-phpLDAPadmin

1
2
3
4
5
6
7
8
docker run -d \
-p 80:80 \
-p 443:443 \
--name phpldapadmin-service \
--hostname phpldapadmin-service \
--link openldap-container:ldap-host \
--env PHPLDAPADMIN_LDAP_HOSTS=ldap-host \
osixia/phpldapadmin

访问:https://localhost/ 进行登录

image.png
登录成功界面
image.png

初始化和创建用户

创建OU(organizational unit)

image.png
image.png

创建 Posix 用户默认组

image.png
image.png
image.png

创建用户

image.png
image.png
image.png

image.png
image.png

测试登录

Login DN: cn=biaoyang,ou=rancher,dc=example,dc=com
Password: 123456
image.png
image.png

系统接入OpenLDAP

以Rancher为例

配置连接LDAP服务器

image.png

配置访问权限

image.png

测试登录

image.png

资料

  1. wiki:https://zh.wikipedia.org/wiki/%E8%BD%BB%E5%9E%8B%E7%9B%AE%E5%BD%95%E8%AE%BF%E9%97%AE%E5%8D%8F%E8%AE%AE
  2. Understanding LDAP - Design and Implementation :https://www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstracts/sg244986.html?OpenDocument
  3. openLDAP:https://www.openldap.org/
  4. https://www.openldap.org/doc/admin24/intro.html#What%20is%20LDAP

LDAP-轻量目录访问协议
https://mikeygithub.github.io/2023/08/12/yuque/LDAP-轻量目录访问协议/
作者
Mikey
发布于
2023年8月12日
许可协议