一个计算机技术爱好者与学习者

0%

ldap入门篇

1. ldap简介

The LDAP(Lightweight Directory Access Protocol) is an open, vendor-neutral, industry standard application protocol for accessing and maintaining distributed directory information services over an Internet Protocol (IP) network. Directory services play an important role in developing intranet and Internet applications by allowing the sharing of information about users, systems, networks, services, and applications throughout the network. As examples, directory services may provide any organized set of records, often with a hierarchical structure, such as a corporate email directory. Similarly, a telephone directory is a list of subscribers with an address and a phone number.

简单来说,LDAP(轻量目录访问协议)是一个协议,用来解决多个系统的统一权限管理问题。

参考文档:

2. ldap结构

ldap的核心是目录树,准确来说,是DIT(Directory Information Tree 目录信息树)。

LDAP directory servers present data arranged in tree-like hierarchies in which each entry may have zero or more subordinate entries. This structure is called the Directory Information Tree, or DIT.

LDAP 目录服务器将信息以树形的方式组织,每一项都可以包含 0 个或多个子项。这样的结构叫做目录信息树。

目录信息树和文件系统目录树有什么差别?
答:目录信息树是信息存储的组织结构,文件系统目录树是文件存储的组织结构。

2.1. Entry

在目录信息树中,每一行,都可以叫做一项(Entry),不论是叶子节点还是中间的节点。
项包含一个 DN,一些属性,一些对象类。

2.2. Root DSE

每个 LDAP 服务器必须对外暴露一个特殊的项,叫做 Root DSE(Root DSA-specific Entry),这个项的 DN 是空字符串。这个项是根节点,描述了 LDAP 服务器自身的信息和能力。例如 LDAP 服务器支持的功能,LDAP 协议版本等信息。

2.3. DN

DN(Distinguished Name 分辨名)是用于唯一标识一个项,类似于关系型数据库中的主键。
DN也表示项在目录信息树中的位置,DN字符串从左向右,各组成部分依次向树根靠近。

2.4. RDN

RDN(Relative Distinguished Name 相对分辨名)就是键值对。
DN 由若干个 RDN 组成,以逗号分隔。

2.5. DC

DC(Domain Component 域名组成)http://example.com 这样的域名,拆成 dc=example,dc=com 这样的形式。

2.6. O

O(Organization 组织机构、公司),在 DN 中可能会包含 O=公司 这样的组成部分,这里的 O 指代组织机构。

2.7. OU

OU(Organization Unit 组织单元、部门),在 DN 中可能会包含 OU=某某部门 这样的组成部分,这里的 OU 指代组织单元。

2.8. Object Classes

每个项里面包含若干个 Object Classes,Object Class指定了本项中必须、可能包含的属性,相当于 MySQL 中的建表语句。
包含某个 Object Class 的项,必须满足 Object Class 中约定的规范,例如规定哪些属性必须存在。

3. 部署ldap server

LDAP是一个协议,约定了 Client 与 Server 之间的信息交互格式、使用的端口号、认证方式等内容。而 LDAP 协议的实现,有着众多版本。
例如微软的 Active Directory 是 LDAP 在 Windows 上的实现,AD 实现了 LDAP 所需的树形数据库、具体如何解析请求数据并到数据库查询然后返回结果等功能。
再例如 OpenLDAP 是可以运行在 Linux 上的 LDAP 协议的开源实现。
而我们平常说的 LDAP Server,一般指的是安装并配置了 Active Directory、OpenLDAP 这些程序的服务器。

本节中,我们使用OpenLDAP安装部署一个ldap server。

参考文档:

1、下载ldap镜像

1
docker pull bitnami/openldap:2.5.12-debian-10-r29

网上推荐较多的是osixia/openldap,这里我们选择的是bitnami/openldap。因为bitnami很靠谱,使命就是让开源软件的使用更加简单。

2、启动ldap

1
2
3
4
5
6
7
8
9
10
11
12
mkdir -p /opt/openldap
chmod a+w /opt/openldap
docker run --name openldap -d \
-p 1389:1389 \
-p 1636:1636 \
-v /opt/openldap:/bitnami/openldap \
--env LDAP_ROOT=dc=voidking,dc=com \
--env LDAP_ADMIN_USERNAME=admin \
--env LDAP_ADMIN_PASSWORD=adminpassword \
--env LDAP_USERS=customuser \
--env LDAP_PASSWORDS=custompassword \
bitnami/openldap:2.5.12-debian-10-r29

admin用户对应的DN为cn=admin,dc=voidking,dc=com

如果不指定LDAP_ROOT,那么默认为dc=example,dc=org,admin用户对应的DN为cn=admin,dc=example,dc=org

3、查看ldap

1
2
docker ps | grep openldap
docker logs openldap

4. ldap client

ldap client也有很多,本文中选择Apache Directory Studio
安装过程比较简单不再展开,这里重点说一下它的使用方法。

1、新建LDAP Connection

2、填写网络参数
主机名填写openldap所在主机IP,端口填写1389,Check Network Parameter,没问题的话点击Next

3、填写鉴权参数
Bind DN or user填入DN cn=admin,dc=voidking,dc=com,密码填入 adminpassword ,Check Authentication,没问题的话点击Finish

4、查看目录信息树数据

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-ldap-start/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~