Active Directory 轻型目录服务 (AD LDS) 架构使用对象类和属性来定义对象的类型和可以在 AD LDS 目录中创建和存储的数据。每个 AD LDS 配置集都具有其独立的可管理的架构,该架构存储在架构目录分区中。为了保持 AD LDS 简单和灵活的设计概念,基础(或默认)AD LDS 架构仅包含启动 AD LDS 实例所需的类和属性。管理员或应用程序本身可以使用新的类和属性来扩展该架构。另外,可以停用不需要的架构类和属性。因为在目录中包含所有对象,访问控制列表 (ACL) 会保护架构对象,这样仅授权的用户可以更改架构。AD LDS 目录中的每个对象都是一个在架构中定义的对象类的实例,如下面的插图中所示。
对象类
对象类代表共享一组共同特征的对象的类别,比如用户、打印机或应用程序。每个对象类的定义包含一系列可用于描述类的实例的属性。例如,User 类具有类似 givenName、surname 和 streetAddress 的属性。类的属性列表可划分为类的对象必须包含的那些属性和对象可能包含的其他属性。每个类的定义还会列出其对象是指定类的对象的父项的那些类。
例如,下表显示 AD LDS User 类的定义。
属性 | 值 |
---|---|
Dn |
CN=User,CN=Schema,CN=Configuration |
objectClass |
top; classSchema; |
cn |
User; |
distinguishedName |
CN=User,CN=Schema,CN=Configuration; |
subClassOf |
organizationalPerson; |
mayContain |
audio; carLicense; departmentNumber; displayName; employeeNumber; employeeType; givenName; homePostalAddress; jpegPhoto; labeledURI; photo; preferredLanguage; roomNumber; secretary; uid; userPKCS12; userSMIMECertificate; x500uniqueIdentifier; |
rDNAttID |
cn; |
adminDisplayName |
User; |
adminDescription |
User; |
objectClassCategory |
1; |
lDAPDisplayName |
user; |
name |
User; |
objectGUID |
dac9093a-d2aa-408a-81bb-0fe8179165da; |
schemaIDGUID |
bf967aba-0de6-11d0-a285-00aa003049e2; |
objectCategory |
CN=Class-Schema,CN=Schema,CN=Configuration; |
defaultObjectCategory |
CN=Person,CN=Schema,CN=Configuration; |
属性
架构也定义每个属性。每个属性的定义包括属性的唯一标识符、属性的语法、属性值的可选范围限制、属性是仅有一个值还是有多个值以及属性是否进行过索引。目录架构仅定义每个属性一次。以后,每个属性都可以被多个对象类引用。例如,description 属性仅定义一次,然后许多对象类都可以引用它。
下表显示 telephone number 的属性定义,该属性是一个代表性的架构属性。
属性 | 值 |
---|---|
objectClass |
top; attributeSchema; |
cn |
Telephone-Number; |
distinguishedName |
CN=Telephone-Number,CN=Schema,CN=Configuration; |
instanceType |
0x4 = ( IT_WRITE ); |
whenCreated |
11/12/2002 13 |
22 |
14 Pacific Standard Time Pacific Daylight Time; |
whenChanged |
11/12/2002 13 |
22 |
14 Pacific Standard Time Pacific Daylight Time; |
uSNCreated |
217; |
attributeID |
2.5.4.20; |
attributeSyntax |
2.5.5.12; |
isSingleValued |
TRUE; |
rangeLower |
1; |
rangeUpper |
64; |
uSNChanged |
217; |
showInAdvancedViewOnly |
TRUE; |
adminDisplayName |
Telephone-Number; |
adminDescription |
Telephone-Number; |
oMSyntax |
64; |
searchFlags |
0; |
lDAPDisplayName |
telephoneNumber; |
name |
Telephone-Number; |
objectGUID |
bf19d7eb-ea0f-4f2d-af67-f439a037d8a4; |
schemaIDGUID |
bf967a49-0de6-11d0-a285-00aa003049e2; |
attributeSecurityGUID |
77b5b886-944a-11d1-aebd-0000f80367c1; |
systemOnly |
FALSE; |
systemFlags |
0x10 = ( FLAG_SCHEMA_BASE_OBJECT ); |
isMemberOfPartialAttributeSet |
TRUE; |
objectCategory |
CN=Attribute-Schema,CN=Schema,CN=Configuration; |
单值和多值属性
属性可以是单值的,也可以是多值的。单值属性的实例只能包含单个值。多值属性的实例可以包含多个值,它们必须都使用相同的语法。多值属性的每个值必须唯一。
注意 | |
多值属性按随机顺序存储其值。因此,不应该根据多值属性中值的顺序作出任何目录决策,不管是使用编程方式或是手动方式。 |
索引的属性
索引属性可帮助提高基于索引的属性的查询的性能。单值属性和多值属性都可以进行索引;类不能进行索引。可以将属性标记为通过它们的架构定义进行索引。索引属性时还允许用户在指定搜索字符串时使用通配符 (*) 作为前缀和后缀。将属性标记为可索引时,会将属性的所有实例都添加到索引中,而不是仅添加特定类成员的实例。对属性的索引,特别是对多值属性的索引,会负面影响复制和对象创建时间,以及目录数据库大小。因此,您应该仅索引常用的属性。
有关详细信息,请参阅“Active Directory 架构”(