【n8n教程】:LDAP节点,管理企业用户目录!

什么是 LDAP?为什么要用它?

在企业中,LDAP(轻量级目录访问协议)是一种标准的目录服务协议,用来集中管理用户信息、权限和组织结构。想象一下,如果你有100个员工,需要为他们创建账号、管理权限、更新信息,LDAP 就像一个中央通讯录,所有用户信息都存在一个地方。

LDAP 的核心优势:

常见的 LDAP 实现:


n8n 中的 LDAP 节点是什么?

在 n8n 中,LDAP 节点就像一个魔法钥匙,它可以直接连接到你的 LDAP 服务器,执行各种操作,包括:

操作说明使用场景
Search(搜索)查询LDAP目录中的用户或组查找所有销售部员工
Create(创建)在LDAP中添加新用户条目新员工入职,自动创建账号
Update(更新)修改现有用户的属性更新员工的部门、邮箱等信息
Delete(删除)删除用户条目员工离职,删除账号
Compare(比较)比较属性值验证密码是否正确
Rename(重命名)修改条目的专有名称(DN)组织结构调整

快速开始:5分钟上手 LDAP 节点

第一步:配置 LDAP 凭证

在使用 LDAP 节点前,你需要连接到真实的 LDAP 服务器。以下是配置步骤:

  1. 1. 打开 n8n,创建一个新工作流
  2. 2. 点击左侧的 "Credentials"(凭证)按钮
  3. 3. 选择 "Create New" → "LDAP"
  4. 4. 填入以下信息
    • Host:LDAP 服务器地址(如 ldap.example.com
    • Port:LDAP 端口(通常是 389,加密时是 636)
    • Bind DN:管理员账号的 DN(如 cn=admin,dc=example,dc=com
    • Bind Password:管理员密码
    • Base DN:搜索的根目录(如 dc=example,dc=com

    
    
    
  配置示例(以 Active Directory 为例):
- Host: ldap.corp.com
- Port: 389
- Bind DN: cn=Administrator,cn=Users,dc=corp,dc=com
- Bind Password: [你的密码]
- Base DN: dc=corp,dc=com

第二步:添加 LDAP 节点

  1. 1. 点击工作流画布上的 "+" 号
  2. 2. 搜索 "LDAP" 并选择 LDAP 节点
  3. 3. 在右侧配置面板选择你的 LDAP 凭证

第三步:选择操作 - 以搜索为例

最常用的操作是搜索 (Search)。假设你要查找所有邮箱为 @company.com 的用户:

  1. 1. 设置操作为 "Search"
  2. 2. 配置搜索参数
    • Base DNou=users,dc=company,dc=com(搜索的起点)
    • Search ForinetOrgPerson(搜索用户对象)
    • Attributemail(要搜索的属性字段)
    • Search Text*@company.com(搜索条件,* 代表通配符)
  3. 3. 勾选 "Return All" 以获取所有匹配结果

核心概念理解:DN 和属性

什么是 DN(Distinguished Name)?

DN 是 LDAP 中的唯一标识符,就像每个人的身份证号。它从具体到抽象逐层组织,通常看起来像这样:


    
    
    
  uid=john.doe,ou=users,ou=sales,dc=company,dc=com

解读这个 DN:

快速记忆: DN = 从叶子到根的完整路径,就像文件系统的绝对路径!

常见的 LDAP 属性

属性含义示例
uid用户唯一标识john.doe
cn常用名称John Doe
mail邮箱地址john^company.com
sn姓氏Doe
givenName名字John
ou组织单位Sales
department部门Sales Department
telephoneNumber电话+1-555-0123
memberOf所属组cn=sales-group,ou=groups,dc=company,dc=com

实战案例:员工入职自动化工作流

场景描述

HR部门每次新员工入职时,都需要:

  1. 1. 在 LDAP 中创建新用户账号
  2. 2. 验证用户是否创建成功
  3. 3. 发送欢迎邮件给员工

现在我们用 n8n 自动化完成这个流程!

工作流逻辑


    
    
    
  启动触发 → 获取员工信息 → 创建 LDAP 用户 → 验证成功 → 发送欢迎邮件

完整的工作流代码

下面是这个工作流的完整 JSON 配置,你可以直接导入到 n8n 中使用:


    
    
    
  {
  "name"
: "员工入职自动化 - LDAP用户创建",
  "nodes"
: [
    {

      "parameters"
: {},
      "id"
: "11ed7c55-b2dd-4c9a-8505-5c0d8b6e9f4a",
      "name"
: "When called via webhook",
      "type"
: "n8n-nodes-base.webhook",
      "typeVersion"
: 1,
      "position"
: [250, 300],
      "webhookId"
: "9a8b7c6d-5e4f-3g2h-1i0j-9k8l7m6n5o4p"
    }
,
    {

      "parameters"
: {
        "operation"
: "search",
        "ldapCredential"
: "ldap_prod",
        "baseDn"
: "ou=users,dc=company,dc=com",
        "searchFor"
: "inetOrgPerson",
        "attribute"
: "uid",
        "searchText"
: "{{ $json.employee_id }}",
        "returnAll"
: false,
        "limit"
: 1
      }
,
      "id"
: "21ed7c55-b2dd-4c9a-8505-5c0d8b6e9f4b",
      "name"
: "检查用户是否存在",
      "type"
: "n8n-nodes-base.ldap",
      "typeVersion"
: 1,
      "position"
: [500, 300]
    }
,
    {

      "parameters"
: {
        "conditions"
: {
          "stringConditions"
: [
            {

              "value1"
: "{{ $nodes['检查用户是否存在'].data.length }}",
              "operation"
: "equals",
              "value2"
: "0"
            }

          ]

        }

      }
,
      "id"
: "31ed7c55-b2dd-4c9a-8505-5c0d8b6e9f4c",
      "name"
: "用户不存在?",
      "type"
: "n8n-nodes-base.if",
      "typeVersion"
: 1,
      "position"
: [750, 300]
    }
,
    {

      "parameters"
: {
        "operation"
: "create",
        "ldapCredential"
: "ldap_prod",
        "dn"
: "uid={{ $json.employee_id }},ou=users,dc=company,dc=com",
        "attributes"
: [
          {

            "attributeId"
: "objectClass",
            "value"
: "inetOrgPerson"
          }
,
          {

            "attributeId"
: "uid",
            "value"
: "{{ $json.employee_id }}"
          }
,
          {

            "attributeId"
: "cn",
            "value"
: "{{ $json.employee_name }}"
          }
,
          {

            "attributeId"
: "sn",
            "value"
: "{{ $json.employee_lastname }}"
          }
,
          {

            "attributeId"
: "mail",
            "value"
: "{{ $json.employee_email }}"
          }
,
          {

            "attributeId"
: "telephoneNumber",
            "value"
: "{{ $json.employee_phone }}"
          }
,
          {

            "attributeId"
: "department",
            "value"
: "{{ $json.department }}"
          }
,
          {

            "attributeId"
: "userPassword",
            "value"
: "{{ $json.initial_password }}"
          }

        ]

      }
,
      "id"
: "41ed7c55-b2dd-4c9a-8505-5c0d8b6e9f4d",
      "name"
: "创建新 LDAP 用户",
      "type"
: "n8n-nodes-base.ldap",
      "typeVersion"
: 1,
      "position"
: [1000, 200]
    }
,
    {

      "parameters"
: {
        "operation"
: "search",
        "ldapCredential"
: "ldap_prod",
        "baseDn"
: "ou=users,dc=company,dc=com",
        "searchFor"
: "inetOrgPerson",
        "attribute"
: "uid",
        "searchText"
: "{{ $json.employee_id }}",
        "returnAll"
: false,
        "limit"
: 1
      }
,
      "id"
: "51ed7c55-b2dd-4c9a-8505-5c0d8b6e9f4e",
      "name"
: "验证用户创建成功",
      "type"
: "n8n-nodes-base.ldap",
      "typeVersion"
: 1,
      "position"
: [1250, 200]
    }
,
    {

      "parameters"
: {
        "emailAddress"
: "{{ $json.employee_email }}",
        "subject"
: "欢迎加入我们!你的账号已创建",
        "textContent"
: "亲爱的 {{ $json.employee_name }},\n\n欢迎加入公司!\n\n你的用户ID:{{ $json.employee_id }}\n你的初始密码:{{ $json.initial_password }}\n\n请妥善保管,并在首次登录时修改密码。\n\n如有问题,请联系IT部门。",
        "mode"
: "composedHTML"
      }
,
      "id"
: "61ed7c55-b2dd-4c9a-8505-5c0d8b6e9f4f",
      "name"
: "发送欢迎邮件",
      "type"
: "n8n-nodes-base.sendGrid",
      "typeVersion"
: 1,
      "position"
: [1500, 200]
    }
,
    {

      "parameters"
: {
        "respondWith"
: "first_entry_json"
      }
,
      "id"
: "71ed7c55-b2dd-4c9a-8505-5c0d8b6e9f4g",
      "name"
: "返回结果",
      "type"
: "n8n-nodes-base.respondToWebhook",
      "typeVersion"
: 1,
      "position"
: [1750, 200]
    }

  ]
,
  "connections"
: {
    "When called via webhook"
: {
      "main"
: [
        [

          {

            "node"
: "检查用户是否存在",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "检查用户是否存在"
: {
      "main"
: [
        [

          {

            "node"
: "用户不存在?",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "用户不存在?"
: {
      "main"
: [
        [

          {

            "node"
: "创建新 LDAP 用户",
            "type"
: "main",
            "index"
: 0
          }

        ]
,
        [

          {

            "node"
: "返回结果",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "创建新 LDAP 用户"
: {
      "main"
: [
        [

          {

            "node"
: "验证用户创建成功",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "验证用户创建成功"
: {
      "main"
: [
        [

          {

            "node"
: "发送欢迎邮件",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "发送欢迎邮件"
: {
      "main"
: [
        [

          {

            "node"
: "返回结果",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }

  }

}

如何导入这个工作流

  1. 1. 打开 n8n,进入工作流编辑器
  2. 2. 点击右上角的 "..." → "Import from File"
  3. 3. 将上面的 JSON 代码保存为 .json 文件后选择
  4. 4. 配置 LDAP 凭证和其他参数
  5. 5. 测试工作流!

测试工作流的示例数据

在 Webhook 节点测试时,使用以下 JSON 数据:


    
    
    
  {
  "employee_id"
: "johndoe",
  "employee_name"
: "John",
  "employee_lastname"
: "Doe",
  "employee_email"
: "john.doe@company.com",
  "employee_phone"
: "+1-555-0123",
  "department"
: "Sales",
  "initial_password"
: "TempPass123!"
}

常见错误与解决方案

❌ 错误 1:连接失败 "Unable to connect to LDAP server"

原因:LDAP 服务器地址或端口错误

解决

❌ 错误 2:"Invalid DN syntax"

原因:DN 格式错误

解决

❌ 错误 3:"Insufficient access rights"

原因:管理员权限不足

解决


进阶技巧

技巧 1:批量创建用户

如果你有一个 CSV 文件包含100个新员工信息,可以这样做:

  1. 1. 使用 Read Files node 读取 CSV
  2. 2. 使用 Loop Over Items 遍历每个员工
  3. 3. 在循环中执行 LDAP Create 操作

技巧 2:同步用户到其他系统

在创建 LDAP 用户后,自动同步到:

技巧 3:定时清理离职员工

设置 Cron 触发器每月运行,自动:

  1. 1. 搜索已标记为离职的员工
  2. 2. 禁用他们的账号
  3. 3. 从组中移除
  4. 4. 生成离职报告

总结

你现在已经掌握了:

🚀 接下来的步骤:

  1. 1. 根据你的实际环境配置 LDAP 连接
  2. 2. 创建你的第一个 LDAP 工作流
  3. 3. 测试并部署到生产环境
  4. 4. 持续优化工作流以提高效率

引用链接

[1] 官方文档: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ldap/
[2] n8n系列教程: https://www.undsky.com/blog/?category=n8n%E6%95%99%E7%A8%8B#