> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashcat.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenLDAP

> 通过 Docker Compose 搭建 OpenLDAP 并集成到 Flashduty

<Warning>
  LDAP 集成登录仅 **私有化版本** 支持。
</Warning>

## 快速了解

LDAP（Lightweight Directory Access Protocol，轻量级目录访问协议）是一种基于 X.500 标准的协议，用于访问和维护分布式目录服务。LDAP 使得用户和应用程序能够查询、浏览和搜索存储在目录中的信息，如用户身份信息、网络资源等。

LDAP 通常运行在 TCP/IP 协议栈上，特别是使用 TCP 端口 389（未加密通信）和 636（加密通信，使用 LDAPS）。

**LDAP 的核心特性：**

* **树状结构**：LDAP 数据组织成树状结构，称为 DIT（Directory Information Tree），便于进行层次化的搜索和浏览
* **条目和属性**：LDAP 中的每个条目（Entry）包含多个属性（Attribute），属性有类型和值，例如 `cn` 代表通用名称（Common Name），`mail` 代表电子邮件地址

OpenLDAP 是一个开源的 LDAP 实现，由于其开源和灵活性，成为了许多企业和组织的首选。

<Note>
  本文基于环境中已经支持 Docker 和 Docker Compose，如果环境不支持，请先自行安装。
</Note>

## Docker Compose 配置

```yaml docker-compose.yml theme={null}
version: '1'

networks:
  go-ldap-admin:
    driver: bridge

services:
  openldap:
    image: osixia/openldap:1.5.0
    container_name: go-ldap-admin-openldap
    hostname: go-ldap-admin-openldap
    restart: always
    environment:
      TZ: Asia/Shanghai
      LDAP_ORGANISATION: "flashduty.com"
      LDAP_DOMAIN: "flashduty.com"
      LDAP_ADMIN_PASSWORD: "password"
    volumes:
      - ./openldap/ldap/database:/var/lib/ldap
      - ./openldap/ldap/config:/etc/ldap/slapd.d
    ports:
      - 389:389
    networks:
      - go-ldap-admin

  phpldapadmin:
    image: osixia/phpldapadmin:0.9.0
    container_name: go-ldap-admin-phpldapadmin
    hostname: go-ldap-admin-phpldapadmin
    restart: always
    environment:
      TZ: Asia/Shanghai
      PHPLDAPADMIN_HTTPS: "false"
      PHPLDAPADMIN_LDAP_HOSTS: go-ldap-admin-openldap
    ports:
      - 8088:80
    volumes:
      - ./openldap/phpadmin:/var/www/phpldapadmin
    depends_on:
      - openldap
    links:
      - openldap:go-ldap-admin-openldap
    networks:
      - go-ldap-admin
```

<Tip>
  请将 `password` 替换成您想要设置的密码。
</Tip>

## 服务启动

将上述配置文件保存为 `docker-compose.yml`，在配置文件所在的目录，打开终端运行以下命令：

<Tabs>
  <Tab title="前台运行">
    ```bash theme={null}
    docker-compose up
    ```
  </Tab>

  <Tab title="后台运行">
    ```bash theme={null}
    docker-compose up -d
    ```
  </Tab>
</Tabs>

**查看服务状态：**

```bash theme={null}
docker-compose ps
```

**停止服务：**

```bash theme={null}
docker-compose down
```

## 登录 OpenLDAP

在浏览器中访问 `http://ip:8088/`，使用以下凭据登录：

| 字段  | 值                              |
| --- | ------------------------------ |
| 用户名 | `cn=admin,dc=flashduty,dc=com` |
| 密码  | 您设置的密码                         |

## OpenLDAP 配置

### 添加组和用户

![添加组和用户](https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/kb/ldap-add-group-user.png)

<Note>
  在 **用户路径**（例如上图 `ou=people` 下的 `cn=flash duty`）=> **Add new attribute** => 选择 **Email**，为用户添加 Email 属性。若已存在请忽略。
</Note>

## Flashduty 集成

结合上述 OpenLDAP 配置，Flashduty 集成信息如下图所示：

![Flashduty集成配置](https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/kb/ldap-duty-config.png)

<Tip>
  上述字段的含义与描述请参考 [配置单点登录](/zh/platform/configure-sso)。
</Tip>

配置完成后，点击设置抽屉底部的 **连接检测** 按钮，验证 Flashduty 能否成功连接到 OpenLDAP 服务器。连接成功后再点击 **保存**。
