DB2 Web 服务提供者的安全性(3)
设置数据库用户
针对完整的 DADX 文件组,配置数据库用户。您可以以明文形式或 base64 编码的形式在叫做 group.properties 的配置文件中输入用户标识和口令,来设置数据库用户。但是即使利用编码,这并不提供真实的安全性,因为口令并没有被加密。补救措施是设置 Web 服务提供者使用一个数据源(DataSource),然后在 WebSphere 中为该数据源设置用户。该方法的另一个优点是您可以对于多个数据源使用连接池。
在下一步中,为 dxx_sample 组打开组配置文件,如图 5 所示。您可以切换到位于窗口左中部的“Project Navigator”视图来查看该项目中的所有文件。到该文件的路径是“SecureDADX/Java Resources/groups.dxx_sample/group.properties”。修改前面两个配置参数为:
initialContextFactory=com.ibm.websphere.naming.WsnInitialContextFactory
datasourceJNDI=jdbc/sampleDataSource
第一个参数“initialContextFactory”是在 WebSphere 中访问 JNDI(Java 命名和目录接口)所需要的。第二个参数“datasourceJNDI”是 JNDI 中数据源的名称。后面,我们将在 WebSphere 中用这个名称配置数据源。
图 5. 修改 group.properties
在下一步中,当我们利用 WebSphere 管理控制台工作时,将在 WebSphere 中完成数据源的设置。
设置授权
下面的步骤修改您的 Web 应用程序的部署描述符。单击位于窗口左下侧的 J2EE Hiearchy标签,然后双击 Web 应用程序 SecureDADX,如图 6 所示。这将打开 Web 应用程序部署描述符编辑器。单击 Security 标签,以编辑安全性设置。
图 6. 打开 Web 应用程序部署描述符
下一步创建一个新的角色。角色是用户的集合,它类似于操作系统中的组。在该示例中,我们创建一个角色 —— “DADXUser”,以包含所有允许访问 DADX 的用户。在一个真实的应用程序中,您可能创建诸如 “accounting”、“engineering” 和 “administrator” 的角色,然后允许它们访问不同的 DADX 文件。
图 7. 添加并命名一个角色
在创建角色之后,单击编辑器中的 Security constraints 标签。安全性约束类似于数据库中的“GRANT”语句。不同之处在于它们处理的是 URL,而不是表、存储过程和其他数据库对象。我们为完整的 DADX 组创建一个安全性约束。这就是 URL 模式表示为“/db2sample/*”的原因,这是针对 dxx_sample 组中的所有 URL 的 URL 路径(注意:在 web.xml 部署描述符文件中存在一个从 dxx_sample 到 db2sample URL 的映射)。
如果您希望以相同的约束增强整个 Web 应用程序的安全性,可以使用 URL 模式的其他选项,比如“/*”。或者,如果您希望以这个安全性约束增强一个特定 DADX 的安全性,可以使用 /db2sample/myDADX.dadx/*。您可以具有多种安全性约束,因此有可能将所有的读操作放在一个 DADX 文件中,而将写操作放在另一个 DADX 中,然后要求用户在特定的角色中,以允许执行读取或者更新操作。
接下来的三个图展示如何添加安全性约束(图 8),如何设置正确的 URL 和 HTTP 方法(图 9)以及如何针对该约束允许“DADXUser”角色(图 10)。
图 8. 添加安全性约束
图 9. 添加新的资源约束
图 10. 设置已授权的角色
下一步是为我们的 Web 应用程序设置机密性。