本节包括以下主题:
ldap 领域使用来自 LDAP 服务器的信息执行验证。用户信息包括用户名、密码和用户所属的组。要使用 LDAP 区域,必须已在 LDAP 目录中定义了用户和组。
要创建 LDAP 领域,请按照创建领域中的步骤添加新领域,然后添加下表中的属性。
表 9–2 ldap 领域的必需属性
属性名称 |
说明 |
值 |
---|---|---|
目录 |
目录服务器的 LDAP URL。 |
LDAP URL 的格式为:ldap://主机名:端口,例如 ldap://myldap.foo.com:389。 |
base-dn |
用户数据位置的基本标识名 (Distinguished Name, DN),由于将执行树范围的搜索,因此该用户数据的位置可以是高于用户数据的任何级别。搜索树越小,性能越好。 |
搜索的域,例如:dc=siliconvalley, dc=BayArea, dc=sun, dc=com。 |
jaas-context |
要用于此区域的登录模块类型。 |
必须为 ldapRealm。 |
下表显示了 ldap 领域的可选属性。
表 9–3 ldap 领域的可选属性
属性名称 |
说明 |
默认值 |
---|---|---|
search-filter |
用于查找用户的搜索过滤器。 |
uid=%s(%s 扩展为主题名称)。 |
group-base-dn |
组数据位置的基本 DN。 |
与 base-dn 相同,但如果需要也可以对其进行调整。 |
group-search-filter |
用于查找用户的组成员关系的搜索过滤器。 |
uniquemember=%d(%d 扩展为用户元素 DN)。 |
group-target |
包含组名称条目的 LDAP 属性名。 |
CN |
search-bind-dn |
用于向目录验证以执行搜索-过滤器查找的可选 DN。对目录的要求只是不允许进行匿名搜索。 | |
search-bind-password |
search-bind-dn 中给定的 DN 的 LDAP 密码。 |
例如,假定在 LDAP 目录中定义了一个 LDAP 用户 Joe Java,如下所示:
uid=jjava,ou=People,dc=acme,dc=com uid=jjava givenName=joe objectClass=top objectClass=person objectClass=organizationalPerson objectClass=inetorgperson sn=java cn=Joe Java
创建或编辑 ldap 领域时,您可以使用示例代码输入下表中所示的值。
表 9–4 ldap 领域示例值
属性名称 |
属性值 |
---|---|
directory |
服务器的 LDAP URL,例如:ldap://ldap.acme.com:389 |
base-dn |
ou=People,dc=acme,dc=com。 可以向更高层次进行搜索(例如 dc=acme、dc=com),但搜索将遍历树的更大部分,会导致性能降低。 |
jaas-context |
ldapRealm |
solaris 领域从基础 Solaris 用户数据库(由系统配置确定)获取用户和组信息。solaris 领域调用基础 PAM 基础结构以进行验证。如果已配置的 PAM 模块需要超级用户权限,则域必须以超级用户身份运行才能使用该区域。有关详细信息,请参见安全服务的 Solaris 文档。
solaris 领域有一个必需的属性 jaas-context,该属性指定要使用的登录模块的类型。属性值必须为 solarisRealm。
只有 Solaris 9 或更高版本才支持 solaris 领域。
除了四个内置区域以外,您还可以创建以其他方式存储用户数据(例如存储在关系型数据库中)的自定义区域。自定义区域的开发不在本文档的讨论范围之内。有关更多信息,请参见 Application Server Developer's Guide 中的 "Securing Applications" 一章。
作为管理员,您需要了解的主要事项是:自定义领域是由源自 Java 验证和授权服务 (Java Authentication and Authorization Service, JAAS) 软件包的类(称为 LoginModule)实现的。
按照创建领域中介绍的过程,输入自定义领域的名称和 LoginModule 类的名称。
自定义领域可以使用任何唯一名称,例如 myCustomRealm。
添加下表所示的自定义领域的属性。
属性名称 |
属性值 |
---|---|
jaas-context |
LoginModule 类名,例如 simpleCustomRealm |
auth-type |
领域的说明,例如“简单示例自定义领域”。 |
单击“确定”。
编辑域的登录配置文件 domain-dir/config/login.conf,并在文件末尾添加 JAAS LoginModule 的全限定类名,如下所示:
realmName { fully-qualified-LoginModule-classname required; }; |
例如,
myCustomRealm { com.foo.bar.security.customrealm.simpleCustomLoginModule required; }; |
将 LoginModule 类和所有相关类复制到 domain-dir/lib/classes 目录中。
如果控制台中显示“需要重新启动”,请重新启动服务器。
确保已正确装入区域。
检查 domain-dir/logs/server.log 以确保服务器已装入该领域。服务器应调用领域的 init() 方法。
certificate 领域支持 SSL 验证。此领域在 Application Server 的安全上下文中设置用户身份,并使用从信任库和密钥库文件中以加密方式检验的客户机证书中获得的用户数据来填充该用户身份(请参见 关于证书文件)。使用 certutil 将用户添加到这些文件中。
使用 certificate 领域,J2EE 容器可以根据每个用户证书中的标识名 (Distinguished Name, DN) 来执行授权处理。DN 是证书对其公共密钥进行标识的实体的名称。此名称使用 X.500 标准,因此它在 Internet 中应该是唯一的。有关密钥库和信任库的更多信息,请参阅使用网络安全服务 (NSS) 工具中的 certutil 文档。
下表列出了 certificate 领域的可选属性。
表 9–5 certificate 领域的可选属性
属性 |
说明 |
---|---|
assign-groups |
以逗号分隔的组名列表。提供有效证书的所有客户机均被指定给这些组。例如,employee,manager,它们是用户组的名称。 |
jaas-context |
要用于此区域的登录模块类型。对于 certificate 领域,该值必须为 certificateRealm。 |
服务器在 file 领域的名为 keyfile 的文件和 admin-realm 领域的名为 admin-keyfile 的文件中维护所有用户、组和密码信息。对于这两种领域,file 属性均指定了 keyfile 的位置。下表显示了 file 领域的必需属性。
表 9–6 file 区域的必需属性
属性名称 |
说明 |
默认值 |
---|---|---|
file |
密钥文件的完整路径和名称。 |
domain-dir/config/keyfile |
jaas-context |
要用于此区域的登录模块类型。 |
fileRealm 是唯一的有效值 |
keyfile 最初为空,因此在使用 file 领域之前,必须先添加用户。有关说明,请参见管理 file 区域用户。
admin-keyfile 最初包含管理员用户名、加密格式的管理员密码和该用户所属的组(默认情况下为 asadmin)。有关将用户添加到 admin-realm 的更多信息,请参见授予访问管理工具的权限。
admin-realm 的 asadmin 组中的用户已被授权,可以使用管理控制台和 asadmin 工具。只能将具有服务器管理权限的用户添加到该组中。
仅在 Enterprise Edition 中,可以使用管理控制台来管理用户(如管理 file 区域用户所述),也可以使用 NSS 工具来管理用户。网络安全服务 (NSS) 是为支持启用安全性的客户机和服务器应用程序的跨平台开发而设计的一组库。使用 NSS 构建的应用程序可以支持 SSL v2 和 v3、TLS、PKCS #5、PKCS #7、PKCS #11、PKCS #12、S/MIME、X.509 v3 证书和其他安全性标准。有关详细信息,请链接到以下 URL:
位于 http://www.mozilla.org/projects/security/pki/nss/ 上的 Network Security Services (NSS)
位于 http://www.mozilla.org/projects/security/pki/nss/tools/ 上的 NSS Security Tools
位于 http://www.mozilla.org/projects/security/pki/nss/overview.html 上的 Overview of NSS
使用管理控制台来管理 file 领域用户。file 领域中的用户和组列在 keyfile 文件中,该文件的位置由 file 属性指定。
还可以使用以下步骤将用户添加到任何 file 领域(包括 admin-realm)中。只需将本节中引用的 file 领域替换为目标领域的名称即可完成操作。
file 领域中的用户可以属于 J2EE 组,它是按照常见属性分类的一个用户类别。例如,假定电子商务应用程序的用户属于 CUSTOMER 组,但是大客户可以属于 PREFERRED 组。将用户分组可以简化对用户量很大时的访问控制。
初次安装 Application Server 之后,唯一的用户是在安装过程中输入的管理员用户。默认情况下,此用户属于 admin-realm 领域中的 asadmin 组,该组可以授予修改 Application Server 的权限。指定给该组的任何用户都将具有管理员权限,也就是说,这些用户具有访问 asadmin 工具和管理控制台的权限。
要管理 file 领域用户,请执行以下任务:
在管理控制台树组件中,展开“配置”节点。
选择要配置的实例:
展开“安全性”节点。
展开“区域”节点。
选择 "file" 节点。
在“编辑区域”页面中,单击“管理用户”按钮。
将显示“文件用户”页面。在此页面中执行以下任务:
单击“新建”将新用户添加到 file 领域中。
在“文件用户”页面中输入以下信息:
用户 ID(必填)—用户名。
密码(必填)—用户密码。
确认密码(必填)—再次输入用户密码进行确认。
组列表(可选)—用户所属的组列表(以逗号分隔)。无需在其他位置定义这些组。
单击“确定”将此用户添加到 file 领域的用户列表中。单击“取消”退出而不保存更改。
create-file-user
在“用户 ID”列中,单击要修改的用户名。
将显示“编辑文件区域用户”页面。
在“密码”和“确认密码”字段中,输入新密码来更改用户密码。
在“组列表”字段中添加或删除组来更改用户所属的组。
用逗号将组名分隔开。不需要先定义组。
单击“保存”将此用户保存到 file 领域的用户列表中。
单击“关闭”退出而不保存更改。
delete-file-user
在双向验证中,服务器端和客户端验证都会被启用。要测试双向验证,必须存在一个包含有效证书的客户机。有关相互验证的信息,请参见《The J2EE 1.4 Tutorial》中的 "Security" 一章,网址为 http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html。
要启用对特定应用程序的相互验证,请使用 deploytool 将验证方法设置为 Client-Certificate。有关使用 deploytool 的更多信息,请参阅《The J2EE 1.4 Tutorial》的 "Security" 一章,网址为 http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html。
Application Server 使用 certificate 领域进行 HTTPS 验证。