Openldap 2.4的数据同步

摘 要:本文分析了ldap数据同步协议、openldap2.4的实现和配置。
关键词: ldap,openldap2.4,数据同步

LDAP概述
OpenLdap是一个开源的ldap服务实现,当前最高稳定版本为2.4.11。openldap2.4实现了RFC4533规定的数据同步协议,不再使用老版本的slurpd推送方式来同步数据。openldap同步时,采用slapd派生的线程来进行同步操作。新的同步方式比老的方式更加稳定。
Openldap2.4编译时需要添加一些选项,否则不能使用一些同步特性。编译安装过程如下:
./configure –prefix=/usr/local/openldap-2.4.11 –enable-debug –enable-modules –enable-ldap –enable-relay –enable-accesslog –enable-auditlog –enable-syncprov CPPFLAGS=-I/usr/local/JnLdap/db-4.2.52-AES/include/ LDFLAGS=-L/usr/local/JnLdap/db-4.2.52-AES/lib/
make depend
make
make install
在configure阶段–enable-ldap、–enable-accesslog和–enable-syncprov选项不可少。其中–enable-ldap选项用于支持ldap代理,在同步中用来推送数据;–enable-accesslog选项用于记录用户操作,在同步中用于记录服务端的数据修改;–enable-syncprov选项用于支持数据同步引擎。

LDAP数据同步协议
Ldap数据同步协议(RFC4533)由openldap基金会的K. Zeilenga和IBM的J.H. Choi提出,并在openldap2.4中实现。该协议将同步操作定义为ldap协议的一个扩展操作,并规定了两种同步模式:refreshOnly和refreshAndPersist。这两种模式中,同步均由客户端发起,所不同的是同步完成后的操作:refreshOnly模式下,后续操作由客户端轮询完成,refreshAndPersist模式下,在后续操作中,服务端负责发送相应的改变数据而客户端负责接受并处理本地ldap条目。
为了提高性能和减少网络传输,ldap数据同步协议要求客户端发起同步请求时,提供一个cookie(最开始的请求除外)。服务端根据此cookie来决定发送给客户端的数据,客户端根据接收到的数据来处理本地的ldap条目。在同步完成之后,客户端必须更新cookie,用于下次同步。Cookie是服务端计算(查询本地条目)的依据。
在每种模式中,都涉及到如何计算数据的变化,包括:添加的数据、修改的数据以及删除的数据。Ldap的每个条目包含了时间信息,包括生成时间戳(createTimestamp)和修改时间戳(modifyTimestamp)。对于添加和修改的数据,服务端根据客户端传送来的cookie(包含时间信息)计算得到,并将这些数据发送给客户端,每个数据标记是添加的还是修改的。对于已删除的数据,则处理比较复杂。当服务端有修改日志时,服务端可以较容易地根据cookie来计算被删除的条目,并将这些条目的DN或者UUID发送给客户端。客户端收到后删除本地的条目。此种情况下,删除条目的计算在服务端完成。当服务端无记录修改日志时,服务端无法计算哪些条目被删除,它只能提供当前还存在的数据。服务端将这些还存在的条目DN或者UUID[2]发送给客户端,由客户端来计算已删除条目。
Ldap协议主要包含两种模式,如下所示:
1)RefreshOnly模式
如下图所示:

说明:
1)Initial Content Request(初始请求)中,客户端不提供cookie,服务端返回所有符合查询条件的条目,结束时客户端得到一个cookie;
2)Content Refresh Request(内容更新请求)与初始化请求的查询条件必须一致,并且包含一个cookie,
3)内容更新阶段,“Changes Entries”包括新添加的条目和修改的条目(基于cookie计算得出);对于已删除的条目,有两种方式来通知客户端。“Present Messages”用于返回当前还存在的条目;“Deleted Messages”用于明确告知客户端已删除的条目。这两种消息仅包含条目的名称(Directory Name)或者UUID。

4 openldap2.4同步配置

1Openldap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值