【ACCESS精品源码栏目提醒】:网学会员在ACCESS精品源码频道为大家收集整理了“【精品】AD编程 - 其它资料“提供大家参考,希望对大家有所帮助!
Microsoft LDAP 错误代码Microsoft Windows 2000 Active Directory 使用 Internet 标准的轻量级目录访问协议 LDAP来访问信息。
在响应各种 LDAP 请求时,域控制器会返回包含域 LDAP 错误代码的响应,这些错误代码指示协议操作的状态。
本文将介绍这些错误代码。
下表描述了这些错误代码。
代码 值 说明---------------------------------------------------------------------------LDAP_SUCCESS 0x00 请求成功。
Sucessful request.LDAP_OPERATIONS_ERROR 0x01 LDAP 库初始化失败。
Intialization ofLDAP library failed.LDAP_PROTOCOL_ERROR 0x02 出现协议错误。
Protocol error occurred.LDAP_TIMELIMIT_EXCEEDED 0x03 超出时间限制。
Time limit has exceeded.LDAP_SIZELIMIT_EXCEEDED 0x04 超出大小限制。
Size limit has exceeded.LDAP_COMPARE_FALSE 0x05 比较结果为 FALSE。
Compare yielded FALSE.LDAP_COMPARE_TRUE 0x06 比较结果为 TRUE。
Compare yielded TRUE.LDAP_AUTH_METHOD_NOT_SUPPORTED 0x07 不支持此身份验证方法。
Theauthentication method is not supported.LDAP_STRONG_AUTH_REQUIRED 0x08 需要加强的身份验证。
Strong authentication isrequired.LDAP_REFERRAL_V2 0x09 LDAP 版本 2 检索。
LDAP version 2 referral.LDAP_PARTIAL_RESULTS 0x09 接收到部分结果和检索。
Partial results and referrals received.LDAP_REFERRAL 0x0a 出现检索。
Referral occurred.LDAP_ADMIN_LIMIT_EXCEEDED 0x0b 超出服务器上的管理限制。
Administration limit onthe server has exceeded.LDAP_UNAVAILABLE_CRIT_EXTENSION 0x0c 没有精密扩展。
Critical extension isunavailable.LDAP_CONFIDENTIALITY_REQUIRED 0x0d 需要保密。
Confidentiality is required.LDAP_NO_SUCH_ATTRIBUTE 0x10 请求的属性不存在。
Requested attribute does not exist.LDAP_UNDEFINED_TYPE 0x11 类型未定义。
The type is not defined.LDAP_INAPPROPRIATE_MATCHING 0x12 出现不适当的匹配。
An inappropriate matchingoccurred.LDAP_CONSTRAINT_VIOLATION 0x13 出现约束冲突。
A constraint violation occurred.LDAP_ATTRIBUTE_OR_VALUE_EXISTS 0x14 属性已存在或已被赋值。
The attribute existsor the value has been assigned.LDAP_INVALID_SYNTAX 0x15 语法无效。
The syntax is invalid.LDAP_NO_SUCH_OBJECT 0x20 对象不存在。
Object does not exist.LDAP_ALIAS_PROBLEM 0x21 别名无效。
The alias is invalid.LDAP_INVALID_DN_SYNTAX 0x22 辨别名的语法无效。
The distinguished name has aninvalid syntax.LDAP_IS_LEAF 0x23 该对象为叶对象。
The object is a leaf.LDAP_ALIAS_DEREF_PROBLEM 0x24 无法取消对别名的引用。
Cannot de-reference thealias.LDAP_INAPPROPRIATE_AUTH 0x30 身份验证不正确。
Authentication is inappropriate.LDAP_INVALID_CREDENTIALS 0x31 提供的凭据无效。
The supplied credential is invalid.LDAP_INSUFFICIENT_RIGHTS 0x32 用户无足够的访问权限。
The user has insufficient accessrights.LDAP_BUSY 0x33 服务器忙。
The server is busy.LDAP_UNAVAILABLE 0x34 服务器不可用。
The server is unavailable.LDAP_UNWILLING_TO_PERFORM 0x35 服务器不处理目录请求。
The server does not handledirectory requests.LDAP_LOOP_DETECT 0x36 引用链循环回至引用服务器。
The chain of referrals has loopedback to a referring server.LDAP_NAMING_VIOLATION 0x40 存在命名冲突。
There was a naming violation.LDAP_OBJECT_CLASS_VIOLATION 0x41 存在对象类别冲突。
There was an object classviolation.LDAP_NOT_ALLOWED_ON_NONLEAF 0x42 不允许在非叶对象上操作。
Operation is notallowed on a non-leaf object.LDAP_NOT_ALLOWED_ON_RDN 0x43 不允许在 RDN 上操作。
Operation is not allowed onRDN.LDAP_ALREADY_EXISTS 0x44 对象已存在。
The object already exists.LDAP_NO_OBJECT_CLASS_MODS 0x45 无法修改对象类别。
Cannot modify object class.LDAP_RESULTS_TOO_LARGE 0x46 返回的结果太大。
Results returned are too large.LDAP_AFFECTS_MULTIPLE_DSAS 0x47 多个目录服务代理受到影响。
Multiple directoryservice agents are affected.LDAP_OTHER 0x50 出现未知错误。
Unknown error occurred.LDAP_SERVER_DOWN 0x51 无法联系 LDAP 服务器。
Cannot contact the LDAP server.LDAP_LOCAL_ERROR 0x52 出现本地错误。
Local error occurred.LDAP_ENCODING_ERROR 0x53 出现编码错误。
Encoding error occurred.LDAP_DECODING_ERROR 0x54 出现解码错误。
Decoding error occurred.LDAP_TIMEOUT 0x55 搜索超时。
The search was timed out.LDAP_AUTH_UNKNOWN 0x56 出现未知的身份验证错误。
Unknown authentication erroroccurred.LDAP_FILTER_ERROR 0x57 搜索筛选器不正确。
The search filter is incorrect.LDAP_USER_CANCELLED 0x58 用户已取消操作。
The user has canceled the operation.LDAP_PARAM_ERROR 0x59 传递给例程的参数不正确。
An incorrect parameter was passed toa routine.LDAP_NO_MEMORY 0x5a 系统内存不足。
The system is out of memory.LDAP_CONNECT_ERROR 0x5b 无法建立到服务器的连接。
Cannot establish a connection tothe server.LDAP_NOT_SUPPORTED 0x5c 不支持此功能。
The feature is not supported.LDAP_CONTROL_NOT_FOUND 0x5d ldap 函数找不到指定控件。
The ldap function did notfind the specified control.LDAP_NO_RESULTS_RETURNED 0x5e 不支持此功能。
The feature is not supported.LDAP_MORE_RESULTS_TO_RETURN 0x5f 将返回其他结果。
Additional results are to bereturned.LDAP_CLIENT_LOOP 0x60 检测到客户循环。
Client loop was detected.LDAP_REFERRAL_LIMIT_EXCEEDED 0x61 超出检索限制。
The referral limit was exceeded.LDAP_SASL_BIND_IN_PROGRESS 0x0E 多阶段绑定的中间绑定结果 Intermediary bindresult for multi-stage 完------------------------------------------------------------LDAP 介绍1. LDAP 介绍 41.1. LDAP 是什么 41.2. LDAP 是电话簿 41.3. LDAP 是不是数据库 42. LDAP 的特点 52.1. LDAP 的优势 52.1.1 跨平台 52.1.2 费用及维护 52.1.3 复制技术 52.1.4 允许使用 ACI 52.2. LDAP 存储什么数据 62.3. 什么时候该用 LDAP 存储数据 63. LDAP 的基本模型 73.1 信息模型:描述 LDAP 的信息表示方式 73.2 命名模型:描述 LDAP 中的数据如何组织 73.3 功能模型:描述 LDAP 中的数据操作访问 73.4 安全模型:描述 LDAP 中的安全机制 83.4.1 身份认证 83.4.2 通讯安全 83.4.3 访问控制 84. LDAP 数据结构 94.1 树状组织 94.2 条目和条目认证 94.3 数据样式(schema) 94.4 对象类型objectClass 94.5 过滤器和语法 104.6 树移植 104.7 LDIF 交换文件 104.8 JAVA 或 CORBA 对象串行化存储 101.1. LDAP 是什么LDAP 是轻量目录访问协议,英文全称是 Lightweight Directory
Access Protocol,一般都简称为 LDAP。
它是基于 X.500 标准的,但是简单多了并且可以根据需要定制。
与 X.500 不同,LDAP 支持 TCP/IP,这对访问 Internet 是必须的。
LDAP 的核心规范在 RFC 中都有定义,所有与 LDAP 相关的 RFC 都可以在 LDAPman RFC 网页中找到。
简单说来,LDAP 是一个得到关于人或者资源的集中、静态数据的快速方式。
LDAP 是一个用来发布目录信息到许多不同资源的协议。
通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大。
1.2. LDAP 是电话簿LDAP 其实是一电话簿,类似于我们所使用诸如 NISNetwork Information Service、DNSDomain Name Service等网络目录,也类似于你在花园中所看到的树木。
1.3. LDAP 是不是数据库不少 LDAP 开发人员喜欢把 LDAP 与关系数据库相比,认为是另一种的存贮方式,然后在读性能上进行比较。
实际上,这种对比的基础是错误的。
LDAP 和关系数据库是两种不同层次的概念,后者是存贮方式(同一层次如网格数据库,对象数据库),前者是存贮模式和访问协议。
LDAP 是一个比关系数据库抽象层次更高的存贮概念,与关系数据库的查询语言 SQL属同一级别。
LDAP 最基本的形式是一个连接数据库的标准方式。
该数据库为读查询作了优化。
因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。
从另一个意义上 LDAP 是实现了指定的数据结构的存贮,它是一种特殊的数据库。
但是LDAP 和一般的数据库不同,明白这一点是很重要的。
LDAP 对查询进行了优化,与写性能相比 LDAP 的读性能要优秀很多。
就象 Sybase、Oracle、Informix 或 Microsoft 的数据库管理系统(DBMS)是用于处理查询和更新关系型数据库那样,LDAP 服务器也是用来处理查询和更新 LDAP 目录的。
换句话来说LDAP 目录也是一种类型的数据库,但不是关系型数据库。
要特别注意的是,LDAP 通常作为一个 hierarchal 数据库使用,而不是一个关系数据库。
因此,它的结构用树来表示比用表格好。
正因为这样,就不能用 SQL 语句了。
2. LDAP 的特点2.1. LDAP 的优势2.1.1 跨平台LDAP 最大的优势是:可以在任何计算机平台上,用很容易获得的而且数目不断增加的LDAP 的客户端程序访问 LDAP 目录。
而且也很容易定制应用程序为它加上 LDAP 的支持。
LDAP 协议是跨平台的和标准的协议,因此应用程序就不用为 LDAP 目录放在什么样的服务器上操心了。
实际上,LDAP 得到了业界的广泛认可,因为它是 Internet 的标准。
产商都很愿意在产品中加入对 LDAP 的支持,因为他们根本不用考虑另一端(客户端或服务端)是怎么样的。
LDAP 服务器可以是任何一个开发源代码或商用的 LDAP 目录服务器(或者还可能是具有 LDAP 界面的关系型数据库),因为可以用同样的协议、客户端连接软件包和查询命令与 LDAP 服务器进行交互。
与 LDAP 不同的是,如果软件产商想在软件产品中集成对DBMS 的支持,那么通常都要对每一个数据库服务器单独定制。
2.1.2 费用及维护不象很多商用的关系型数据库,你不必为 LDAP 的每一个客户端连接或许可协议付费。
大多数的 LDAP 服务器安装起来很简单,也容易维护和优化。
2.1.3 复制技术LDAP 服务器可以用quot推quot或quot拉quot的方法复制部分或全部数据,例如:可以把数据quot推quot到远程的办公室,以增加数据的安全性。
复制技术是内置在 LDAP 服务器中的而且很容易配置。
如果要在 DBMS 中使用相同的复制功能,数据库产商就会要你支付额外的费用,而且也很难管理。
2.1.4 允许使用 ACILDAP 允许你根据需要使用 ACI(一般都称为 ACL 或者访问控制列表)控制对数据读和写的权限。
例如,设备管理员可以有权改变员工的工作地点和办公室号码,但是不允许改变记录中其它的域。
ACI 可以根据谁访问数据、访问什么数据、数据存在什么地方以及其它对数据进行访问控制。
因为这些都是由 LDAP 目录服务器完成的,所以不用担心在客户端的应用程序上是否要进行安全检查。
2.2. LDAP 存储什么数据LDAP 对于这样存储这样的信息最为有用:也就是数据需要从不同的地点读取,但是不需要经常更新。
例如,这些信息存储在 LDAP 目录中是十分有效的:l 公司员工的电话号码簿和组织结构图l 客户的联系信息l 计算机管理需要的信息,包括 NIS 映射、email 假名,等等l 软件包的配置信息l 公用证书和安全密匙2.3. 什么时候该用 LDAP 存储数据大多数的 LDAP 服务器都为读密集型的操作进行专门的优化。
因此,当从 LDAP 服务器中读取数据的时候会比从专门为 OLTP 优化的关系型数据库中读取数据快一个数量级。
也是因为专门为读的性能进行优化,大多数的 LDAP 目录服务器并不适合存储需要需要经常改变的数据。
例如,用 LDAP 服务器来存储电话号码是一个很好的选择,但是它不能作为电子商务站点的数据库服务器。
如果下面每一个问题的答案都是quot是quot,那么把数据存在 LDAP 中就是一个好主意。
l 需要在任何平台上都能读取数据吗?l 每一个单独的记录项是不是每一天都只有很少的改变?l 可以把数据存在平面数据库(flat database)而不是关系型数据库中吗?换句话来说,也就是不管什么范式不范式的,把所有东西都存在一个记录中(差不多只要满足第一范式)。
最后一个问题可能会唬住一些人,其实用平面数据库去存储一些关系型的数据也是很一般的。
例如,一条公司员工的记录就可以包含经理的登录名。
用 LDAP 来存储这类信息是很方便的。
一个简单的判断方法:如果可以把保数据存在一张张的卡片里,就可以很容易地把它存在LDAP 目录里。
3. LDAP 的基本模型3.1 信息模型:描述 LDAP 的信息表示方式在 LDAP 中信息以树状方式组织,在树状信息中的基本数据单元是条目,而每个条目由属性构成,属性中存储有属性值;LDAP 中的信息模式,类似于面向对象的概念,在 LDAP 中每个条目必须属于某个或多个对象类(Object Class),每个 Object Class 由多个属性类型组成,每个属性类型有所对应的语法和匹配规则;对象类和属性类型的定义均可以使用继承的概念。
每个条目创建时,必须定义所属的对象类,必须提供对象类中的必选属性类型的属性值,在LDAP 中一个属性类型可以对应多个值。
在 LDAP 中把对象类、属性类型、语法和匹配规则统称为 Schema,在 LDAP 中有许多系统对象类、属性类型、语法和匹配规则,这些系统 Schema 在 LDAP 标准中进行了规定,同时不同的应用领域也定义了自己的 Schema,同时用户在应用时,也可以根据需要自定义Schema。
这有些类似于 XML,除了 XML 标准中的 XML 定义外,每个行业都有自己标准的DTD 或 DOM 定义,用户也可以自扩展;也如同 XML,在 LDAP 中也鼓励用户尽量使用标准的 Schema,以增强信息的互联互通。
在 Schema 中最难理解的是匹配规则,这是 LDAP 中为了加快查询的速度,针对不同的数据类型,可以提供不同的匹配方法,如针对字符串类型的相等、模糊、大于小于均提供自己的匹配规则。
3.2 命名模型:描述 LDAP 中的数据如何组织LDAP 中的命名模型,也即 LDAP 中的条目定位方式。
在 LDAP 中每个条目均有自己的 DN和 RDN。
DN 是该条目在整个树中的唯一名称标识,RDN 是条目在父节点下的唯一名称标识,如同文件系统中,带路径的文件名就是 DN,文件名就是 RDN。
3.3 功能模型:描述 LDAP 中的数据操作访问在 LDAP 中共有四类 10 种操作:查询类操作,如搜索、比较;更新类操作,如添加条目、删除条目、修改条目、修改条目名;认证类操作,如绑定、解绑定;其它操作,如放弃和扩展操作。
除了扩展操作,另外 9 种是 LDAP 的标准操作;扩展操作是 LDAP 中为了增加新的功能,提供的一种标准的扩展框架,当前已经成为 LDAP 标准的扩展操作,有修改密码和StartTLS 扩展,在新的 RFC 标准和草案中正在增加一些新的扩展操作,不同的 LDAP 厂商也均定义了自己的扩展操作。
3.4 安全模型:描述 LDAP 中的安全机制LDAP 中的安全模型主要通过身份认证、安全通道和访问控制来实现。
3.4.1 身份认证在 LDAP 中提供三种认证机制,即匿名、基本认证和 SASL(Simple Authentication andSecure Layer)认证。
匿名认证即不对用户进行认证,该方法仅对完全公开的方式适用;基本认证均是通过用户名和密码进行身份识别,又分为简单密码和摘要密码认证;SASL 认证即 LDAP 提供的在 SSL 和 TLS 安全通道基础上进行的身份认证,包括数字证书的认证。
3.4.2 通讯安全在 LDAP 中提供了基于 SSL/TLS 的通讯安全保障。
SSL/TLS 是基于 PKI 信息安全技术,是目前 Internet 上广泛采用的安全服务。
LDAP 通过 StartTLS 方式启动 TLS 服务,可以提供通讯中的数据保密性、完整性保护;通过强制客户端证书认证的 TLS 服务,同时可以实现对客户端身份和服务器端身份的双向验证。
3.4.3 访问控制虽然 LDAP 目前并无访问控制的标准,但从一些草案中或是事实上 LDAP 产品的访问控制情况,我们不难看出:LDAP 访问控制异常的灵活和丰富,在 LDAP 中是基于访问控制策略语句来实现访问控制的,这不同于现有的关系型数据库系统和应用系统,它是通过基于访问控制列表来实现的,无论是基于组模式或角色模式,都摆脱不了这种限制。
在使用关系型数据库系统开发应用时,往往是通过几个固定的数据库用户名访问数据库。
对于应用系统本身的访问控制,通常是需要建立专门的用户表,在应用系统内开发针对不同用户的访问控制授权代码,这样一旦访问控制策略变更时,往往需要代码进行变更。
总之一句话,关系型数据库的应用中用户数据管理和数据库访问标识是分离的,复杂的数据访问控制需要通过应用来实现。
而对于 LDAP,用户数据管理和访问标识是一体的,应用不需要关心访问控制的实现。
这是由于在 LDAP 中的访问控制语句是基于策略语句来实现的,无论是访问控制的数据对象,还是访问控制的主体对象,均是与这些对象在树中的位置和对象本身的数据特征相关。
在 LDAP 中,可以把整个目录、目录的子树、制定条目、特定条目属性集或符合某过滤条件的条目作为控制对象进行授权;可以把特定用户、属于特定组或所有目录用户作为授权主体进行授权;最后,还可以定义对特定位置(例如 IP 地址或 DNS 名称)的访问权。
4. LDAP 数据结构LDAP 是实现了指定的数据结构的存贮,它包括以下可以用关系数据库实现的结构要求:树状组织、条目认证、类型定义、许可树形记录拷贝。
4.1 树状组织无论是 X500 还是 LDAP 都是采用树状方式进行记录。
每一个树目录都有一个树根的入口条目,子记录全部是这一根条目的子孙。
这是目录与关系数据类型最大的区别(关系数据库的应用结构也可实现树状记录)。
因此,把目录看作是更高级的树状数据库也未尝不可,只不过除此外,它不能实现关系存贮的重要功能。
4.2 条目和条目认证LDAP 是以条目作为认证的根据。
ROOT 的权限认证与目录本身无关,但除此外所有条目的认证权限由条目本身的密码进行认证。
LDAP 可以配置成各种各样不同的父子条目权限继承方式。
每一个条目相当于一个单一的平面文本记录,由条目自身或指定的条目认证进行访问控制。
因此,LDAP 定义的存贮结构等同于一批树状组织的平面数据库,并提供相应的访问控制。
条目中的记录以名-值对的形式存在,每一个名值对必须由数据样式 schema 预定义。
因此,LDAP 可以看作是以规定的值类型以名值对形式存贮在一系列以树状组织的平面数据库的记录的集合。
4.3 数据样式(schema)数据样式 schema 是针对不同的应用,由用户指定(设计)类和属性类型预定义,条目中的类objectclass和属性必须在在 LDAP 服务器启动时载入内存的 schema 已有定义。
因此,AD活动目录中的条目记录就必须符合 Active Directory 的 schema 中。
如果已提供的 schema 中的定义不够用,用户可以自行定义新的 schema.在 http://ldap.akbkhome.com/index.php 中可以看到常用的 schema。
4.4 对象类型objectClass因为 LDAP 目录可以定制成存储任何文本或二进制数据,到底存什么要由你自己决定。
LDAP 目录用对象类型(objectclass)的概念来定义运行哪一类的对象使用什么属性。
在几乎所有的 LDAP 服务器中,你都要根据自己的需要扩展基本的 LDAP 目录的功能,创建新的对象类型或者扩展现存的对象类型。
条目中的记录通过 objectclass 实现分类,objectClass 是一个继承性的类定义,每一个类定义指定必须具备的属性。
如某一条目指定必须符合某个类型,则它必须具备超类所指定的属性。
通过 objectclass 分类,分散的条目中的记录就实际上建立了一个索引结构,为高速的读查询打下了基础。
Objectclass 也是过滤器的主要查询对象。
4.5 过滤器和语法LDAP 是一个查询为主的记录结构,无论是何种查询方式,最终都由过滤器缺点查询的条件。
过滤器相当于 SQL 中的 WHERE 子句。
任何 LDAP 的类过滤和字符串都必须放在括号内,如(objectclass)指列出所有类型的记录(不过分类)。
可以使用,gt,lt,(约等于)进行比较,如numberlt100。
合并条件是最怪的,必须把操作符放在两个操作对象的前面而不是中间,单一操作对象用括号括起来。
如l A 与 B,不是 AampB,而是(ampAB)。
l 或使用quotquot表示;l 非使用quot!quot表示。
l 对于quot与quot,或quot或quot在操作符后可以跟多个条件表达式,但非后则只参是单个表达式。
详见 RFC1558。
4.6 树移植LDAP 最重要的特性和要求并不是读性能,而是扩展性。
这一特性是通过树移植和树复制实现的。
按 LDAP 的 RFC 要求,LDAP 目录应该可以任意地在不同的目录间连接、合并并实现自动复制,及自动性同步。
这意味着用户可以在任一 LDAP 中访问条目,而不用管其中某一部分是否复制自全世界另一目录中的记录,同时另一目录中的记录同样在正常运作。
这一特性如果在关系数据库中实现,意味着要使用程序化的非规范化预复制。
类似于汇总帐目的.
上一篇:
【精品】易语言入门资料
下一篇:
关于听觉掩蔽的语音增强算法及DSP实现