在应用程序中启用可信上下文,以改进应用程序服务器与 DB2® 数据库服务器进行交互的方式。对于通过应用程序来连接到 DB2 数据库的客户机,可使用可信连接来保留这些客户机的身份记录;可信连接将根据那些用户的身份来授予访问权,从而提供更安全的环境。DB2 提供了一个可信连接选项,即,要求在切换用户身份时提供密码。您可以将应用程序服务器配置为使用进行认证的可信连接,并插入您自己的代码以便利用进行认证的可信上下文。
开始之前
请参阅“对 DB2 数据库启用可信上下文”主题,以确保正确地为应用程序服务器配置可信连接。
关于此任务
如果创建可信上下文时指定了 WITH AUTHENTICATION 选项,那么数据库将要求您提供具有最终用户的身份的认证令牌。数据库将先认证最终用户并验证最终用户是否有权访问数据库,然后才允许处理任何请求。
最终用户的身份必须是 RACF® 标识。
过程
- 对于 DB2 数据源,请将 useTrustedContextWithAuthentication 定制属性设置为 true。
- 单击。
- 单击要配置的数据源的名称。
- 单击其他属性标题下的定制属性。
- 单击新建。
- 填写必填字段。 使用以下信息:
名称 |
值 |
useTrustedContextWithAuthentication |
true |
如果未将 useTrustedContextWithAuthentication 定制属性设置为
true,那么应用程序服务器将提供“在运行时复用 DB2 可信连接而不进行认证”这一实现。在这种情况下,您不需要提供任何信息即可使用可信上下文功能。
- 使用 TrustedConnectionMapping 的登录配置,如“对 DB2 启用可信上下文”主题所述。
- 扩展 DataStoreHelper 类,并提供 getPasswordForUseWithTrustedContextWithAuthentication 方法的实现,如“开发定制 DataStoreHelper 类”主题所述。 启用进行认证的可信上下文之后,应用程序服务器在运行时将调用此方法以返回一个密码,它将需要使用此密码才能切换可信上下文身份。应用程序服务器切换可信上下文身份时,此方法返回的密码将被发送到数据库,应用程序服务器不会存储此密码。
仅当符合下列条件时,应用程序服务器才会调用此方法:
- 您已将 useTrustedContextWithAuthentication 数据源定制属性设置为 true。
- 您使用 TrustedConnectionMapping 登录配置。
以下是 getPasswordForUseWithTrustedContextWithAuthentication 方法的一个示例:
public String getPasswordForUseWithTrustedContextWithAuthentication(String identityname, String realm)
throws SQLException
{
return customersOwnUtility().getPassword(identityname) // customers use their own
// implementation to get the password
}
避免故障: 如果不覆盖 DataStoreHelper 类中的
getPasswordForUseWithTrustedContextWithAuthentication 方法以获取用于切换可信连接的身份的密码,就无法启用数据源的
useTrustedContextWithAuthentication 定制属性。如果您未提供
getPasswordForUseWithTrustedContextWithAuthentication
方法的实现,那么应用程序服务器在运行时将抛出具有以下消息的异常:
TRUSTED_WITH_AUTHENTICATION_IMPLEMENTATION_ERROR=DSRA7033E: 如果不覆盖
getPasswordForUseWithTrustedContextWithAuthentication DataStoreHelper,就无法启用数据源的
useTrustedContextWithAuthentication 定制属性。TRUSTED_WITH_AUTHENTICATION_IMPLEMENTATION_ERROR.explanation=已启用
useTrustedContextWithAuthentication 定制属性,但未提供 DataStoreHelper
方法的实现代码(此方法将返回应用程序服务器用于切换身份的密码)。TRUSTED_WITH_AUTHENTICATION_IMPLEMENTATION_ERROR.useraction=请覆盖
getPasswordForUseWithTrustedContextWithAuthentication DataStoreHelper
方法并提供将返回密码的实现代码,或者将数据源的 useTrustedContextWithAuthentication
定制属性设置为 false。
gotcha