
# 通过LDAP协议同步数据
LDAP（Lightweight Directory Access Protocol）即轻量目录访问协议。它是一种树状结构的组织数据，可以简单理解成一个存储用户和组织信息的树形结构数据库。单点登录是LDAP的主要使用场景之一，即用户只在公司计算机上登录一次后，便可以自动在公司内部网上登录。
表1主要术语 
| 术语  | 说明                                       |
|:---|:---|
| ou  | 全称Organization Unit，组织单位，即容器对象。          |
| dc  | 全称Domain Component，域名的部分，格式是将完整的域名分成几部分。 |
| sn  | 全称Surname，即姓。                            |
| cn  | 全称Common Name，公共名称。                      |
| dn  | 全称Distinguished Name，唯一标识名。              |
| uid | 全称User ID，用户ID。                          |
| rdn | 全称Relative dn，相对辨别名，类似文件系统中的相对路径。        |
   
本文主要介绍OneAccess以LDAP协议同步组织和用户数据至OpenLDAP的方法。
#### 配置流程
![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002141926481.png)
#### 前提条件
请确保您已拥有OneAccess管理门户的访问权限。
#### 部署并配置LDAP服务
部署并配置LDAP服务，具体请参考[搭建LDAP服务器](https://support.huaweicloud.com/bestpractice-oneaccess/oneaccess_05_0141.html#oneaccess_05_0141__section178201144175912)和[配置LDAP连接](https://support.huaweicloud.com/bestpractice-oneaccess/oneaccess_05_0141.html#oneaccess_05_0141__section148223445596)。
 #### 在OneAccess中添加企业应用
1. 登录OneAccess管理门户。
2. 在导航栏中，单击"资源 \> 应用"。
3. 在企业应用页面，单击自建应用下的"添加自建应用"，设置Logo和名称，单击"保存"。
 
#### 在OneAccess中配置企业应用
1. 单击[在OneAccess中添加企业应用]中添加的企业应用。
2. 在通用信息模块，单击"同步集成"后的![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001485924972.png)打开同步集成设置，此处选择LDAP，单击"保存"。
   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
   同步集成协议一旦设置不可修改。
   
   
3. 在通用信息模块，单击"同步集成"后的"配置"，进入"参数配置"页签。 
   图1配置同步参数   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002143649521.png)
   表2通用参数 
   | 参数       | 说明                                                                                                                                              |
   |:---|:---|
   | \* 主机    | 运行LDAP服务器的主机名称或IP地址。 说明： OneAccess目前只支持公网访问，LDAP服务器需要提供公网地址。             |
   | \*TCP端口  | 与LDAP服务器进行通信的TCP/IP端口号。默认为636。                                                                                                                  |
   | SSL      | 系统默认true，即使用SSL连接到 LDAP 服务器。                                                                                                                    |
   | StartTLS | 是否启用startTLS进行加密通信。(true：启用StartTLS，且SSL不能设置为true；false：不启用StartTLS)。 如果是同步数据到AD服务器，则SSL和StartTLS必须开启一个。      |
   | 校验证书     | 是否校验证书。仅在SSL为true或者StartTLS为true时有效。true: 校验证书，false: 不校验证书。证书必须是公网认证的证书，自签名证书不可以。                                                              |
   | 协议版本     | 系统默认TLSv1.2，推荐使用TLSv1.3、TLSv1.2。                                                                                                                |
   | \*主体     | 进行LDAP服务器验证时使用的标识名，如cn=admin，cn=test,cn=com。                                                                                                    |
   | \*密码     | 主体的密码。                                                                                                                                          |
   | \* 基本上下文 | 需要同步LDAP目录的根节点。                                                                                                                                 |
   | UID属性    | 映射到UID属性的LDAP属性的名称。系统默认entryUUID。                                                                                                               |
   | 账户对象类    | 在LDAP树中创建新用户对象时将使用的一个或多个对象类。如果输入多个对象类，每一项输入应独占一行；请不要使用逗号或分号来分隔多个对象类。有些对象类可能要求您指定类分层结构中的所有对象类。系统默认top,person,organizationalPerson,inetOrgPerson。 |
      
   表3可选参数 
   | 参数              | 说明                                                                                                                                                                                                                                                                 |
   |:---|:---|
   | 域名              | 域名存在时，回收的用户名中将该域名排除掉（存在多个域名用","分隔，默认用户名会排除域名）。                                                                                                                                                                                                                     |
   | 账户用户名属性         | 保存账户用户名的一个或多个属性。在进行验证时，将使用这些属性查找要验证的用户名的LDAP条目。系统默认uid,cn。                                                                                                                                                                                                         |
   | 机构对象类           | 在LDAP树中创建新机构对象时将使用的一个或多个对象类。如果输入多个对象类，每一项输入应独占一行；请不要使用逗号或分号来分隔多个对象类。有些对象类可能要求您指定类分层结构中的所有对象类。系统默认top,organizationalUnit。                                                                                                                                           |
   | 机构名属性           | 保存机构名的一个或多个属性。在进行验证时，将使用这些属性查找要验证的机构名的LDAP条目。系统默认ou。                                                                                                                                                                                                               |
   | 故障转移服务器         | 列出首选服务器发生故障时将用于故障转移的所有服务器。如果首选服务器发生故障，JNDI将连接到列表中的下一个可用服务器。按照 "ldap://ldap.example.com:389/" 格式（符合 RFC 2255 中所述的标准 LDAP v3 URL）列出所有服务器。只有 URL 的主机和端口部分在此设置中是相关的。                                                                                                   |
   | 密码属性            | 用于保存密码的LDAP属性的名称。在更改用户的密码时，会为该属性设置新密码。系统默认userPassword。如果是同步密码到AD服务器，则配置为unicodePwd。                                                                                                                                                                               |
   | 用于检索账户的LDAP过滤器  | 用于控制从LDAP资源返回的账户的可选LDAP过滤器。如果未指定任何过滤器，则只返回包含所有指定对象类的账户。                                                                                                                                                                                                            |
   | 密码散列算法          | 指出Identity System对密码执行散列时应使用的算法。目前支持的值为SSHA、SHA、SMD5和MD5。空值表示系统不会对密码执行散列。除非LDAP服务器执行散列（Netscape Directory Server 和 iPlanet Directory Server 执行散列），否则这将导致明文密码存储在LDAP中。                                                                                              |
   | 优先处理资源密码策略重置后更改 | 如果在登录模块中指定此资源（即，此资源是传递验证目标），并且将资源的密码策略配置为在重置后更改，则以管理方式重置了资源账户密码的用户需要在成功验证后更改该密码。系统默认"false"。                                                                                                                                                                       |
   | 使用VLV控件         | 指定是否在标准LDAP控件上强制使用VLV控件。默认为"false"。                                                                                                                                                                                                                                |
   | VLV排序属性         | 指定用于资源上 VLV 索引的排序属性。系统默认uid。                                                                                                                                                                                                                                       |
   | 读取模式            | 如果为true，连接器将从服务器中读取模式。如果为false，连接器将根据配置中的对象类提供一个默认模式。要使用扩展对象类，该属性必须为true。系统默认 true。                                                                                                                                                                                |
   | 要同步的基本上下文       | LDAP树中用于确定是否应同步更改的一个或多个起始点。如果未设置此属性，则将使用基本上下文属性来同步更改。                                                                                                                                                                                                              |
   | 用同步的对象类         | 要同步的对象类。更改日志针对所有对象；它会根据所列出的对象类来对更新进行过滤。除非您要将对象与任何超类值同步，否则不应列出对象类的超类。例如，如果仅应同步 "inetOrgPerson" 对象，但应过滤掉 "inetOrgPerson" 的超类（"person"、"organizationalperson" 和 "top"），则此处仅应列出 "inetOrgPerson"。LDAP中的所有对象都是 "top" 的派生子类。因此，绝不应列出 "top"，否则将无法过滤任何对象。系统默认inetOrgPerson。 |
   | 要同步的属性          | 要同步的属性的名称。设置此项后，如果更改日志中的更新没有对任何命名属性进行更新，则会忽略这些更新。例如，如果仅列出 "department"，则只处理影响 "department" 的更改。而忽略所有其他更新。如果将其留空（默认设置），则处理所有更改。                                                                                                                                     |
   | 要同步的账户的LDAP过滤器  | 同步对象时使用的可选LDAP过滤器。由于更改日志适用于所有对象，因此此过滤器只更新符合指定过滤器条件的对象。如果指定了过滤器，则只有在对象符合过滤器条件并且包含已同步的对象类时，才会对其进行同步。                                                                                                                                                                 |
   | 更改日志块大小         | 每个查询获取的更改日志条目数。系统默认100。                                                                                                                                                                                                                                            |
   | 更改编号属性          | 更改日志条目中的更改编号属性的名称。系统默认changeNumber。                                                                                                                                                                                                                                |
   | 使用OR而不是AND进行过滤  | 通常，用于获取更改日志条目的过滤器是基于AND条件检索一段时间间隔内的更改条目。如果设置了此属性，则过滤器将改用OR条件配合所需的更改数量进行过滤。系统默认false。                                                                                                                                                                               |
   | 从过滤器中删除日志条目对象类  | 如果设置了此属性（默认设置），用于获取更改日志条目的过滤器不会包含 "changeLogEntry"对象类，因为更改日志中应该不包含其他对象类型的条目。系统默认true。                                                                                                                                                                              |
   | 要同步的密码属性        | 在执行密码同步时要同步的密码属性的名称。                                                                                                                                                                                                                                               |
   | 状态管理类           | 用于管理启用/禁用状态的类。 如果未指定类，则无法进行身份状态管理。                                                                                                                                                                                                                                 |
   | 是否搜索密码          | 搜索时是否检索用户密码。 默认值为false。                                                                                                                                                                                                                                            |
   | DN属性            | 条目DN属性名称。默认值entryDN。                                                                                                                                                                                                                                               |
   | LDAP过滤器         | 一个可选的LDAP过滤器，用于控制从LDAP资源返回的组。 如果未指定过滤器，则仅返回包含所有指定对象类的组。                                                                                                                                                                                                            |
   | 读超时             | 等待接收响应的时间。如果在指定的时间内没有响应，读取尝试将被中止。值为0或小于0表示没有限制。系统默认30000。                                                                                                                                                                                                          |
   | 连接超时            | 打开新服务器连接时的等待时间。 值0表示将使用TCP网络超时，可能是几分钟。 值小于0表示没有限制。系统默认6000。                                                                                                                                                                                                        |
   | 账号DN前缀          | 当该值为空时，默认为cn，也可以为uid等其它用于dn前缀的属性名。                                                                                                                                                                                                                                 |
      
   
   
4. 配置完成后，单击"保存配置"。单击"测试"可以对连接状态进行测试。
5. 单击"常规配置"，在"常规配置"页签，勾选"是否启用"则此处设置的同步数据处理逻辑生效，同步数据处理逻辑可通过在删除账号、删除机构、禁用账号下拉框中选择的处理逻辑来设置。 
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001914634848.png)
   
   
6. 如果需要同步用户的其他属性， 选择左侧的"对象模型 \> 应用账号模型"，在"属性定义"页签单击"添加"，添加属性参数见[表4]。下面以employeeNumber为例。
   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
   - 系统内置属性，可修改，不支持删除。
   
   - 非内置属性，支持修改和删除，单击待操作属性操作列的"更新"或"删除"进行相应操作。
    
    表4属性定义 
   | 参数      | 说明                                                                                                                                                    |
   |:---|:---|
   | \* 属性名  | 输入应用系统的账号属性，如employeeNumber。                                                                                                                          |
   | \* 显示标签 | 属性名称的标识，建议与**属性名**对应。                                                                                                                                 |
   | 描述      | **属性名**的说明。                                                                                                                                           |
   | \* 属性类型 | 属性值的类型，可在下拉框选择。                                                                                                                                       |
   | 格式      | 只有"属性类型"选择文本时才需要设置该参数，用来设置文本的格式。                                                                                                                      |
   | 是否必填    | 勾选后，同步用户数据至应用时，该属性必须有值，为空时，会提示"{显示标签}为必填属性"。                                                                                                          |
   | 是否唯一    | 只有"属性类型"选择"文本"时才需要设置该参数，勾选后，同步用户数据至应用时，该属性的值具有唯一性，重复时，会提示"{显示标签}"已存在。                                                                                 |
   | 是否敏感    | 只有"属性类型"选择"文本"时才需要设置该参数，勾选后，同步用户数据至应用时，数据隐藏展示，单击![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001684575246.png)可以看到数据内容。 |
      
   
   
7. 单击"保存"。
8. 切换到"映射定义"页签，单击"编辑"，配置属性映射。 
   表5映射定义 
   | 参数    | 说明                                                                                                                       |
   |:---|:---|
   | 系统用户  | OneAccess映射至应用的属性，如手机号。                                                                                                  |
   | 转换方式  | OneAccess与应用之间属性的映射方式。                                                                                                   |
   | 脚本表达式 | 当**转换方式** 选择**脚本转换** 时，可激活该输入框。映射脚本请参考[如何开发映射脚本](https://support.huaweicloud.com/devg-oneaccess/oneaccess_06_0002.html)。 |
   | 执行方式  | OneAccess同步用户数据至目标应用时的方式。                                                                                                |
   | 应用账号  | 应用的账号属性。                                                                                                                 |
      
   
   
9. 如果需要同步机构， 选择左侧的"对象模型 \> 应用机构模型"，单击![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001486084748.png)开启应用机构。应用机构开启后不支持关闭。
   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
   - 系统内置属性可修改，不支持删除。
   
   - 非内置属性支持修改和删除，单击目标属性操作列的"更新"或"删除"进行相应操作。
    
   
   
10. 如果需要同步机构的其他属性， 选择左侧的"对象模型 \> 应用机构模型"，在"属性定义"页签单击"添加"，添加机构属性，配置参数请参见[表6]。
    
     表6属性定义 
    | 参数      | 说明                                                                                                                                                    |
    |:---|:---|
    | \* 属性名  | 应用机构的属性名称。                                                                                                                                            |
    | \* 显示标签 | 属性名称的标识，建议与**属性名**对应。                                                                                                                                 |
    | 描述      | **属性名**的说明。                                                                                                                                           |
    | \* 属性类型 | 属性值的类型，可在下拉框选择。                                                                                                                                       |
    | 格式      | 只有"属性类型"选择文本时才需要设置该参数，用来设置文本的格式。                                                                                                                      |
    | 是否必填    | 勾选后，同步机构数据至应用时，该属性必须有值，为空时，会提示"{显示标签}为必填属性"。                                                                                                          |
    | 是否唯一    | 只有"属性类型"选择"文本"时才需要设置该参数，勾选后，同步机构数据至应用时，该属性的值具有唯一性，重复时，会提示"{显示标签}"已存在。                                                                                 |
    | 是否敏感    | 只有"属性类型"选择"文本"时才需要设置该参数，勾选后，同步机构数据至应用时，数据隐藏展示，单击![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001732414441.png)可以看到数据内容。 |
       
    
    
11. 单击"保存"。
12. 切换到"映射定义"页签，单击"编辑"，配置属性映射，配置参数请参见[表7]。
    
     表7映射定义 
    | 参数    | 说明                                                                                                                       |
    |:---|:---|
    | 组织    | OneAccess映射至应用的组织属性。                                                                                                     |
    | 转换方式  | OneAccess与应用之间属性的映射方式。                                                                                                   |
    | 脚本表达式 | 当**转换方式** 选择**脚本转换** 时，可激活该输入框。映射脚本请参考[如何开发映射脚本](https://support.huaweicloud.com/devg-oneaccess/oneaccess_06_0002.html)。 |
    | 执行方式  | OneAccess同步组织数据至目标应用时的方式。                                                                                                |
    | 应用机构  | 应用的机构属性。                                                                                                                 |
       
    
    
 
#### 验证OneAccess同步数据至OpenLDAP
1. 在应用详情页面，选择左侧的"授权管理 \> 应用机构"，单击"授权策略"，开启机构自动授权，选择需要同步的机构，单击"保存"后，单击"执行新增"。 
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
   - 如果需要删除已同步的部分机构，取消勾选目标机构，单击"保存"后，单击"执行删除"。
   
   - 单击页面的![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001536964881.png)，即可添加虚拟机构。
    
   图2授权机构   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001914807376.png)
   
   
2. 选择左侧的"授权管理 \> 应用账号"，单击"添加账号"，勾选需要同步的用户。如需根据策略给用户授权，请参考[配置应用](https://support.huaweicloud.com/usermanual-oneaccess/oneaccess_03_0310.html)中应用账号的授权策略。
   
   图3添加账号   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001946370501.png)
   
   
3. 选择左侧的"授权管理 \> 同步事件"，可以查看上述的同步记录。同时，对于组织、用户的编辑和删除等操作，也可以进行查看并过滤。 
   图4查看同步事件   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001485924976.png)
   
   
4. 在LDAP中查看上述已同步的数据。 
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001536964877.png)
   
   
 
