5.6. 决定引用和链
根据您的目录的具体需求,在引用和串联之间进行选择。
- 链会降低客户端复杂性,从而降低服务器复杂性。但是,通过串联,客户端应用程序可以与单一服务器交互,并仍然访问存储在多个服务器上的数据。客户端应用不需要对请求链的服务器进行身份验证。
使用引用时,客户端应用必须找到引用并重新提交搜索结果。客户端还必须能够对服务器进行身份验证。
另外,当公司网络使用代理时,有时引用会失败。例如,客户端应用程序可能只有与防火墙中的一个服务器通信的权限。如果该应用程序被称为其他服务器,则应用程序可能无法成功联系它。
但是,参考人员为客户端应用程序提供了更大的灵活性,开发人员可以为分布式目录操作进度向用户提供更好的反馈。
5.6.1. 评估访问控制 复制链接链接已复制到粘贴板!
链评估访问控制与引用的不同。使用引用时,所有目标服务器上必须存在客户端条目(bind DN)。使用串联时,客户端条目不需要位于所有目标服务器上。
5.6.1.1. 使用引用执行搜索请求 复制链接链接已复制到粘贴板!
下图显示了使用引用对服务器的客户端请求:
图 5.11. 使用引用向服务器发送客户端请求
搜索请求以以下方式进行:
- 客户端应用首先与 Server A 绑定。
- 服务器 A 包含提供用户名和密码的客户端的条目,因此它返回绑定接受消息。为了让引用可以正常工作,客户端条目必须存在于 服务器 A 中。
- 客户端应用程序将操作请求发送到 服务器 A。
- 但是 ,服务器 A 不包含请求的信息。相反,Server A 会向客户端应用程序返回一个引用,指示它联系 Server B。
- 然后,客户端应用程序向 Server B 发送绑定请求。要成功绑定,Server B 还必须包含客户端应用程序的条目。
- 绑定成功,客户端应用现在可以将其搜索操作重新提交到 Server B。
此方法要求 Server B 具有来自 Server A 的客户端条目的复制副本。
5.6.1.2. 使用链执行搜索请求 复制链接链接已复制到粘贴板!
您可以通过链解决跨服务器复制客户端条目的问题。
图 5.12. 使用链将客户端请求发送到服务器
搜索请求以以下方式进行:
- 客户端应用与服务器 A 绑定,服务器 A 会尝试确认用户名和密码是否正确。
- 服务器 A 不包含与客户端应用程序对应的条目。相反,它包含指向 Server B 的数据库链接,其中包含客户端的实际条目。服务器 A 将绑定请求 发送到服务器 B。
- 服务器 B 将接受响应 发送到服务器 A。
- 然后,服务器 A 使用数据库链接处理客户端应用程序请求。数据库链接联系位于 Server B 上的远程数据存储来处理搜索操作。
在链系统中,与客户端应用程序对应的条目不需要位于与客户端请求的数据相同的服务器上。下图显示了如何使用两个串联服务器来完成客户端搜索请求。
图 5.13. 使用两个不同的服务器进行身份验证并检索数据
搜索请求以以下方式进行:
- 客户端应用与服务器 A 绑定,服务器 A 确认用户名和密码正确。
- 服务器 A 不包含与客户端应用程序对应的条目。相反,它包含指向 Server B 的数据库链接,其中包含客户端的实际条目。服务器 A 将绑定请求 发送到服务器 B。
- 服务器 B 将接受响应 发送到服务器 A。
- 然后,服务器 A 使用另一个数据库链接处理客户端请求。数据库链接联系位于 Server C 上的远程数据存储来处理搜索操作。
5.6.1.3. 不支持的访问控制 复制链接链接已复制到粘贴板!
数据库链接不支持以下访问控制:
- 控制当用户条目位于其他服务器上时必须访问用户条目的内容。这包括基于组、过滤器和角色的访问控制。
- 根据客户端 IP 地址或 DNS 域的控制可能会被拒绝。这是因为数据库链接在联系远程服务器时模拟客户端。如果远程数据库包含基于 IP 的访问控制,它会使用数据库链接域而不是原始客户端域来评估它们。