本章提供了有关设置和部署 LDAP 服务器,以便将其与 Configuration Manager 配合使用的信息。
在 Java Desktop System Configuration Manager 框架中,配置数据与实体(即 LDAP 系统信息库中的条目,这些条目又与公司的组织结构元素相对应)相关联。
已识别的实体包括:
组织:通常代表总体层次结构的组织(部门、组、团队)单元或地理(洲、国家/地区、位置)单元。
用户:代表总体层次结构的叶节点,如其字面含义所指,通常表示用户。
域:代表网络组织的逻辑结构单元。
主机:也代表总体层次结构的叶节点,但它表示的是网络中的计算机。
角色:代表属性,通常根据功能(管理员,站点管理)划分,适用于一组用户。
组织和用户实体用于定义用户树,而域和主机实体用于定义主机树。这两种树互相独立,但在框架中它们的处理方式类似。
组织和域实体与其他条目之间的关系由系统信息库中各条目的物理位置决定。也就是说,组织和域实体可以包括树中位于这两个实体下的任何条目。角色与用户或主机之间的关系由用户和主机条目的属性决定。
与实体相关的配置数据存储在由框架管理的特定条目中。这些条目通过其关联的服务名称和服务容器进行标识。
要在 Configuration Manager 中使用现有的 LDAP 服务器,您需要:
扩展服务器模式,以支持 Configuration Manager 用来存储配置数据的自定义对象类和属性。
在服务器中自定义和存储系统信息库中各条目的映射信息,以及 Configuration Manager 支持的各实体的映射信息。
要在 Configuration Manager 中使用现有的 LDAP 服务器,必须具有安装 CD 中的以下部署工具:
88apoc-registry.ldif:模式文件,提供用来存储配置数据的对象类和属性。
OrganizationMapping:缺省的特性文件,用来描述 LDAP 条目和 Configuration Manager 实体之间的映射。
UserProfileMapping:缺省的特性文件,用来描述 LDAP 用户条目属性和 Configuration Manager 用户配置文件属性之间的映射。
createServiceTree:脚本,用来将映射文件存储到 LDAP 系统信息库中。
deployApoc:脚本,用来扩展 LDAP 服务器模式并将映射文件存储到 LDAP 系统信息库中。
配置数据存储在条目树中,这些条目树被附加到数据的关联条目。在 LDAP 服务器上存储这些树使用的对象类和属性之前,必须向 LDAP 服务器模式中添加对象和类。例如,提供的模式扩展文件以 LDIF 格式向 Sun JavaTM System Directory Server 中添加这些对象和类。要向其他 LDAP 服务器中添加这些对象和类,需要使用这些服务器可以识别的格式。
要定义 LDAP 条目和 Configuration Manager 实体之间的映射,必须编辑 Organization 映射文件。必须为各个键提供与 LDAP 系统信息库的版式相匹配的值。
用户实体通过一个所有实体使用的对象类和一个其值在整个系统信息库中唯一的属性进行标识。可提供显示名称的格式,此格式将影响用户在管理应用程序中如何显示;且如果组织中用户条目使用容器条目,则可以选择定义该条目。键名及其缺省值有:
# 所有用户条目使用的对象类 User/ObjectClass=inetorgperson # 属性,用户条目中该属性的值在系统信息库中是唯一的 User/UniqueIdAttribute=uid # 用户条目的组织条目中的可选容器, # 如果未使用,则删除该行 User/Container=ou=People # 管理应用程序中的显示名称的格式 User/DisplayNameFormat=sn, givenname
角色实体通过其可能使用的对象类列表和相应的命名属性列表进行标识。这些列表使用 <item1>、<item2>、……、<itemN> 格式,并且必须对齐。也就是说,这些列表必须具有相同数目的项,并且第 n 个对象类必须与第 n 个命名属性一同使用。通过两个键定义了角色和用户之间的关系以及角色和主机之间的关系。VirtualMemberAttribute 键必须指定可以从用户条目或主机条目中查询属性值的属性。该键还必须含有条目所属角色的完整 DN。MemberAttribute 键必须从用户或主机条目为搜索过滤器指定属性。该键还必须含有用户或主机所属角色的完整 DN。VirtualMemberAttribute 键可以是服务类虚拟属性,但 MemberAttribute 键必须是可以在过滤器中使用的真实属性。键名及其缺省值有:
# 角色的对象类列表 Role/ObjectClass=nsRoleDefinition # 相应命名属性的对齐列表 Role/NamingAttribute=cn # 包含用户/主机所属角色的 DN # 的真实属性(可在过滤器中使用) Role/MemberAttribute=nsRoleDN # 对用户/主机的查询返回用户/主机 # 所属角色的 DN 的属性 Role/VirtualMemberAttribute=nsRole
组织实体的标识方式与角色类似,采用的是对象类和相应命名属性的对齐列表。键名及其缺省值有:
# 组织的对象类列表 Organization/ObjectClass=organization # 相应命名属性的对齐列表 Organization/NamingAttribute=o
域实体的标识方式与组织实体类似。键名及其缺省值有:
# 域的对象类列表 Domain/ObjectClass=ipNetwork # 相应命名属性的对齐列表 Domain/NamingAttribute=cn
主机实体的标识方式与用户实体类似。键名及其缺省值有:
# 所有主机条目使用的对象类 Host/ObjectClass=ipHost # 属性,主机条目中该属性的值在系统信息库中是唯一的 Host/UniqueIdAttribute=cn # 主机条目的域条目中的可选容器, # 如果未使用,则删除该行 Host/Container=ou=Hosts
要定义 LDAP 用户条目属性和 Configuration Manager 用户实体属性之间的映射,必须编辑用户配置文件映射文件。每个键对应一个 Configuration Manager 用户属性。正如组织映射所示,可以将键作为值指定给用户条目中的属性名。User/DisplayNameFormat 设置中使用的属性必须在 User Profile 映射中指定。键名及其缺省值有:
# inetOrgPerson.givenName org.openoffice.UserProfile/Data/givenname = givenname # person.sn org.openoffice.UserProfile/Data/sn = sn # inetOrgPerson.initials org.openoffice.UserProfile/Data/initials = initials # organizationalPerson.street org.openoffice.UserProfile/Data/street = street,postalAddress,streetAddress # organizationalPerson.l (city) org.openoffice.UserProfile/Data/l = l # organizationalPerson.st (state) org.openoffice.UserProfile/Data/st = st # organizationalPerson.postalCode org.openoffice.UserProfile/Data/postalcode = postalcode # country.c (country) org.openoffice.UserProfile/Data/c = # organizationalPerson.o (company) org.openoffice.UserProfile/Data/o = o,organizationName # deprecated -- no LDAP corollary org.openoffice.UserProfile/Data/position = # organizationalPerson.title org.openoffice.UserProfile/Data/title = title # inetOrgPerson.homePhone org.openoffice.UserProfile/Data/homephone = homephone # organizationalPerson.telephoneNumber org.openoffice.UserProfile/Data/telephonenumber = telephonenumber # organizationalPerson.facsimileTelephoneNumber org.openoffice.UserProfile/Data/facsimiletelephonenumber = facsimiletelephonenumber,officeFax # inetOrgPerson.mail org.openoffice.UserProfile/Data/mail = mail
自定义反映 LDAP 系统信息库状态的映射文件之后,即可部署这些映射文件。如果 LDAP 服务器模式已包含所需的对象类和属性,则可以直接运行脚本 createServiceTree;否则,必须运行脚本 deployApoc。
deployApoc 脚本专门在 Sun JavaTM System Directory Server 中使用。该脚本将提供的模式扩展文件复制到适当的目录中,循环 LDAP 服务器,然后调用 createServiceTree 脚本。它必须作为有权复制模式系统信息库中的文件并有权重新启动服务器的用户来执行,并且必须通过以下方法调用:
./deployApoc <Directoy Server Directory>
<Directoy Server Directory> 参数必须是指向 Directory Server 安装的 slapd-<server name> 子目录的路径。假定使用缺省目录和服务器的安装名为 myserver.mydomain,则该目录应为 /var/Sun/mps/slapd-myserver.mydomain。
无论 createServiceTree 脚本是直接调用的还是通过 deployApoc 脚本调用的,都将提示用户提供 LDAP 服务器的位置(主机名、端口号和基本 DN)以及具有管理权限的用户的定义(完整 DN 和密码)。然后,该脚本将在 LDAP 服务器中创建引导服务并在其中存储映射文件。它可以作为任何用户执行,调用方法为:
./createServiceTree
然后提示用户提供:
主机名(缺省值:localhost):LDAP 服务器的主机名,
端口号(缺省值:389):LDAP 服务器的端口号,
基本 DN:LDAP 系统信息库的基本 DN,
用户 DN(缺省值:cn=Directory Manager):具有足够的权限在基本 DN 下建立新条目的用户的完整 DN,
密码:该用户的密码,
创建具有以下 DN 的条目:
ou=ApocRegistry,ou=default,ou=OrganizationConfig,ou=1.0,ou=ApocService,ou=services, <baseDN>
并用两个映射文件的内容填充该条目。
如前文所述,deployApoc 脚本执行的操作假定 LDAP 服务器的安装目录、布局和模式扩展步骤与 Sun Java System Directory Server 的非常相似。对于其他目录,则需要手动扩展模式,然后才能运行 createServiceTree 脚本。有关使用 OpenLDAP 和 ActiveDirectory 的详细信息,请参见附录 C,在 Configuration Manager 中使用 OpenLDAP 和 Active Directory”。
已创建的树(与用来保存与实体关联的配置数据的树匹配)与 Sun Java System Identity Server 中的服务管理所使用的树的结构保持一致。
Configuration Manager 框架要求可以创建具有读取和搜索权限的 LDAP 服务器连接,以标识与来自桌面的给定用户或主机标识符所关联的完整 DN。因此,要达到该目的,必须配置系统信息库以允许匿名连接,或者必须建立具有读取和搜索权限的特定用户。
管理应用程序在映射到实体的条目下建立服务树,以保留这些实体的配置数据。因此,用于管理的用户条目需要具有在其所管理的条目下建立子条目的权限。
可以使用以下两个方法从桌面客户端来验证框架的用户:Anonymous 方法和 GSSAPI 方法。Anonymous 方法要求在系统信息库中启用匿名的读取和搜索访问,因为桌面客户端在尝试从 LDAP 服务器中检索数据时不提供任何凭证。要使用 GSSAPI 方法(使用 Kerberos
进行验证),LDAP 服务器必须按在《Sun JavaTM System
Directory Server 5 2004Q2 Administration Guide》中的 "Managing Authentication and Encryption" 一章中的介绍进行配置。