`
lvhuiqing
  • 浏览: 249730 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

LDAP SCHEMA DESIGN_Synopsis (大纲)

阅读更多

 

Synopsis (大纲)

It is possible to make one LDAP directory serve many applications in an organisation. This has the advantage of reducing the effort required to maintain the data, but it does mean that the design must be thought out very carefully before implementation starts.

LDAP directories are structured as a tree of entries, where each entry consists of a set of attribute-value pairs describing one object. The objects are often people, organisations, and departments, but can be anything at all. Schema is the term used to describe the shape of the directory and the rules that govern its content.

在一个特定的组织中,经常会出现一个 LDAP 目录为多个应用程序提供服务的情况。这种做法有利于减少数据维护的工作量,但如果采取这种设计,就必须在实施之前进行认真的思考,规划。在结构上, LDAP 目录是一棵由实体( entity )组成的树( tree )。一个实体则是一个包含多个属性值对的对象。对应通常是人、组织,或者部门,或者其他任何事物。模式这个概念用来描述目录的的结构以及内容应该遵循的规范。

A hypothetical organisation is described, with requirements for “white pages” directory service as well as a wide range of authentication, authorisation, and application-specific directory needs.The issues arising from the LDAP standards are discussed, along with the problems of maintaining compatibility with a range of existing LDAP clients.

本文档描述了一个“假象的”组织,对该组织的描述满足以下需求:采用平面的描述方式;授权,认证,程序规范目录需求。讨论的主题包括 LDAP 标准,以及由兼容已经存在的 LDAP 客户端带来的兼容性问题。

A plan is proposed for the layout of the directory tree, with particular emphasis on avoiding the need to re-organise it later. This involves careful separation of the data describing people,departments, groups, and application-specific objects. A simple approach to entry design is shown, based on the use of locally-defined auxiliary object classes. The effects of schema design on lookup performance are discussed. Some design tricks and pitfalls are presented, based on recent consulting experience.

本文档还提出了一个目录树的推荐布局,该布局强调“避免今后可能出现的重新组织”。为了满足这一要求,在设计时需要注意区分人,部门,组织以及程序细节的对象。为此本文档展示了一个简单的基于使用本地定义的 object class entry 设计策略。与此同时,与 schema 设计相关的查询性能问题在本文档中也有所涉及;并基于近期的咨询经验,给出了一些设计手段和缺陷预防措施。

1 LDAP

LDAP can be used to access information describing people, organisations, roles, services, and many other sorts of entity. It is a standard and widely-implemented protocol, which makes it extremely valuable for integrating multiple applications that need to share common data.

人们已经习惯于用 LDAP 来访问描述人,组织,角色,服务以及其他种类实体的信息。 LDAP 已经成为一个标准的,被广泛应用的协议,这一协议对在多个应用程序中共享数据有着重要价值。

It is important to understand the LDAP data model when considering schema. It is different from the relational model used by most well-known database systems, and this affects the way LDAP systems are designed and used.

要讨论 schema 设计,首先要理解 LDAP 数据模型。 LDAP 中使用到的数据模型与在其他数据库系统中大行其道的关系型模型不同,这一差异导致了 LDAP 系统的不同设计方式和应用方式。

Strictly speaking, LDAP is a protocol - the Lightweight Directory Access Protocol. It is not a database or even a directory although the term LDAP directory is often used to describe a directory service that is accessed using the LDAP protocol. LDAP derives from the X.500/ISO-9594 standards, and was originally intended as a simplified protocol for small computers to use when accessing X.500 systems. In recent years, LDAP has expanded and is now just as complex as X.500 but it still shares the same data model and part of the same distributed-service model.

严格来讲, LDAP 是一个协议( Lightweight Directory Access Protocol 轻型目录访问协议)尽管 LDAP 目录通常用来描述使用 LDAP 进行访问的目录服务,但 LDAP 本身不是一个数据库也不是一个目录。 LDAP 这个概念来源于 X.500/ISO-9594 标准。这个概念本来用于表示小型机使用的,访问 X.500 系统的简单协议。但最近这些年, LDAP 已经被扩展到与 X.500 本身几乎同样复杂。但无论如何, LDAP 还是来用共享相同的数据模型和一部分相同的分布式服务模型。

[RFC3377]

1.1 The LDAP data structure

An LDAP Directory stores information in a tree structure known as the Directory Information Tree (DIT). The nodes in the tree are directory entries, and each entry contains information in attribute-value form. Some attributes may have multiple values; others are restricted to a single value. The set of attributes that may be present in an entry is determined by the objectClass attribute, which is always present. objectClass is a multi-valued attribute and each value defines a set of mandatory and/or optional attributes.

LDAP 目录将信息保存在树形结构中,这种结构被称为 DIT 。树中的节点称为实体,每个实体中保持的信息以属性值的方式存在。某些属性可能是多值的也可能是单值的。某个实体中可能出现的属性在该实体的 objectClass objectClass 是必然出现的)中描述。 objectClass 是一个多值属性,它的每一个值都会定义必须出现 / 可选的属性值。

Each node in the DIT has a name called the Relative Distinguished Name (RDN) which is unique among the peer nodes under its parent. It also has a globally-unique name called the Distinguished Name (DN) made up from the name of the node itself plus the names of all its superior nodes up to the root of the DIT.

每个 DIT 中的节点都拥有一个叫做 RDN 的名字。同一节点的所有子节点中,该名字是唯一的。除此之外,每个节点还会有一个全局唯一的名字叫做 DN DN 由节点自己的名字加上其高级节点的所有名字序列组成。

1.2 The LDAP Distributed Service model

X.500 was conceived as a global directory service. As such, it was expected to hold hundreds of millions of entries and be managed by thousands of different organisations. This led to a service model based on many co-operating servers known as DSAs (Directory System Agents). Each DSA can hold data from one or more arcs of the DIT, and is provided with “knowledge” so that it can direct queries for on-local data to the appropriate place. Queries are expected to outnumber updates by a very large factor, and absolute data consistency across the DIT is not supported, so data can be replicated easily for performance and resilience.

X.500 本认为是一个全局的目录服务。因此,它应该能够保存成千上万的实体,这些实体由上千个不同的组织进行管理。这就引出了一个基于多个合作 server DSA )的服务模式。每个 DSA 可以保持一个或多个 DIT 结构,与此同时, DSA 应该能够提供能够将对本地数据的查询路由到恰当之处的知识。由于一个重要因素,查询次数应该远远大于修改次数。 LDAP 并不支持跨越 DIT 的,绝对的数据一致性。因此数据可能因为性能和弹性因素被轻松的复制。

An LDAP server is effectively a DSA and it follows the same rules, though LDAP does not have such a good distributed-service model for very large networks. Most current LDAP deployments are limited to operation within a single organisation, so although data replication is commonly used, the other features of the distributed service model do not get so much exercise. X.500 and LDAP have many similarities with DNS in terms of data model and service model, but the directory systems are capable of more complex operations.

尽管 LDAP 并不能实现全网络的的分布式服务模型,一个 LDAP Server 实际上就是一个遵循同一规则的 DSA 。大多数并行的 LDAP 部署都仅仅局限于在同一个组织内部,所以尽管数据复制随处可见,其他分布式服务的特征却并不是很常见。 X.500 LDAP 在数据模型和服务模型上与 DNS 在概念上有很多相同之处,只不过目录系统包含更多复杂的操作。

 

分享到:
评论

相关推荐

    ldap_delete.rar_c++ ldap_ldap_ldap删除条目

    本篇文章将深入探讨如何使用C++进行LDAP条目的删除操作,基于"ldap_delete.rar_c++ ldap_ldap_ldap删除条目"的标题和描述,我们将重点关注C++编程中的LDAP操作,特别是删除条目这一环节。 首先,要实现C++中对LDAP...

    Sync_Data.rar_C LDAP AD_c++ ldap_ldap_数据同步

    例如,使用`ldap_search_s()`函数进行搜索操作,`ldap_add_s()`用于添加新记录,`ldap_modify_s()`修改现有条目,以及`ldap_delete_s()`删除条目。 2. **Microsoft Active Directory (AD) 集成**: AD是微软提供的...

    jndi.zip_java ldap_jndi_jndi ldap_ldap_ldap java

    在本案例中,我们关注的是JNDI与Lightweight Directory Access Protocol (LDAP) 的结合使用,这是一个广泛应用于分布式环境中的目录服务协议。通过JNDI,Java开发者可以方便地与LDAP服务器进行交互,实现诸如连接、...

    LDAP.rar_java ldap_ldap_ldap java

    **LDAP简介** Lightweight Directory Access Protocol(轻量级目录访问协议)是互联网上广泛使用的协议,用于访问和管理分布式目录服务。它提供了一种标准的方法来存储、查询和更新各种网络资源的信息,如用户账户...

    ldap.zip_ldap

    搜索操作返回的是一个资源,通过`ldap_first_entry()`和`ldap_next_entry()`遍历结果集,`ldap_get_attributes()`获取每个条目的属性。 6. **添加、删除和修改操作** - `ldap_add()`用于向目录中添加新的条目。 ...

    LDAP_Schema的概念和基本要素

    ### LDAP Schema的概念与基本要素详解 #### 一、引言 在现代企业级应用中,LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)作为一种高效、灵活且功能强大的目录服务标准,广泛应用于用户认证、...

    ldap.rar_c++ ldap_域用户验证

    使用`ldap_search_s()`函数可以执行这个操作。 3. **执行搜索**:发送查询请求后,服务器会返回包含用户信息的结果集。你需要检查结果集中是否存在匹配的用户条目。如果找不到,那么用户可能不存在于域中。 4. **...

    ldap_null_base.nasl

    ldap_null_base

    ldap_null_bind.nasl

    ldap_null_bind

    LDAP_programming_With_Java.zip_java ldap_java ldap_java program

    《LDAP编程与Java》这本书是关于使用Java进行 Lightweight Directory Access Protocol (LDAP) 开发的指南。LDAP是一种开放标准的网络协议,用于访问和管理分布式目录服务。它在企业级应用中广泛使用,如用户身份验证...

    ldap.zip_LDAP DELPHI_delphi ldap

    【LDAP与DELPHI在开发电话簿应用中的整合】 LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,常用于存储和检索用户、组织等结构化数据。它允许客户端通过TCP/IP协议来访问分布式目录服务...

    ldap.zip_Giving

    2. **绑定**:使用`ldap_bind()`函数进行身份验证,这通常是提供管理员的DN(Distinguished Name)和密码。 3. **搜索**:通过`ldap_search()`函数执行查询,这需要一个基DN(Base DN,表示搜索的起点)和过滤条件。...

    deb_php.3.0_ldap_php_

    标题“deb_php.3.0_ldap_php_”暗示了一个基于PHP的LDAP(轻量级目录访问协议)应用,可能是版本3.0的更新或升级。这个应用可能是一个电话簿系统,正如描述“php ldap phonebook v3.0 test”所示,它用于存储和管理...

    LdapBrowser282.rar_LdapBrows_LdapBrowser.282_ldap_ldapBrowser_op

    标题中的"LdapBrowser282.rar_LdapBrows_LdapBrowser.282_ldap_ldapBrowser_op"指的是LdapBrowser的282版本的压缩文件,它包含了该软件的相关组件和可能的操作指南。LdapBrowser是一款专用于管理和查看OpenLDAP...

    LDAP.zip_LDAP DELPHI_active directory_class_delphi ldap_ldap

    LDAP Class, Very Usefull Library & Class, ToShow How To Work With Active Directory From LDAP In DElphi

    CAS_LDAP.rar_CAS SSO_cas ldap_cas openldap_cas_ldap_soa和sso

    在这个场景下,`CAS_LDAP.rar` 文件集合提供了一个关于如何将CAS与OpenLDAP集成以实现SSO和SOA的实践指南。 **CAS (Central Authentication Service)** CAS 是一个开源的、基于Web的单一登录协议服务器,它允许...

    LDAP_Java_API_使用指南.rar

    **LDAP (轻量级目录访问协议) 是一种用于存储和检索目录信息的标准协议,它以树形结构组织数据。在Java环境中,通过Java LDAP API,我们可以实现与LDAP服务器的交互,进行查询、添加、删除和修改操作。本指南将深入...

    ldap.rar_RDBMS_ldap

    **LDAP(Lightweight Directory Access Protocol)轻量级目录访问协议** LDAP是一种开放标准的网络协议,用于访问和管理分布式目录服务。它允许用户和应用程序在Internet或内部网络上搜索和检索信息,例如用户账户...

    3.3.01_LDAP_Java_API_使用指南

    **3.3.01 LDAP Java API 使用指南** 在IT领域,LDAP(Lightweight Directory Access Protocol)是一种用于访问和管理分布式目录服务的标准协议。Java API for LDAP(也称为JNDI,Java Naming and Directory ...

    LDAP SCHEMA DESIGN

    ### LDAP Schema Design详解 #### 一、概述 LDAP(Lightweight Directory Access Protocol)是一种用于访问目录服务的标准协议,被广泛应用于各种场景下的人、组织、角色和服务等实体的信息管理。由于其标准化特性...

Global site tag (gtag.js) - Google Analytics