1

我目前正在做一个审计工作,我需要在后台知道 Oracle 数据库中的最终用户名。

应用程序使用 Oracle 身份验证来授予访问权限,并处理对应用程序功能的权限。它还(正确地)处理对底层数据的访问,确保最终用户凭据保留在数据层中。

当我尝试审核应用程序(使用 Oracle 审核)时,我只获得连接池用户 ID 和 Websphere 服务器名称。

我已经搜索并找到了使用 Reauthentication 的建议(在连接池完全使用之前不会记录正确的用户 ID)、WAS.clientinfo(普通的 ol' 不会将最终用户凭据传递给数据库)并且有找到了对 Guardium 的引用(它可以完成这项工作,但是非常昂贵。)

如何将最终用户信息传递到数据层?我不介意这是否归结为配置更改或第 3 方产品;只要它有效,我们就可以评估它。

4

2 回答 2

0

你读过这个吗。

http://www.ibm.com/developerworks/websphere/techjournal/0506_barghouthi/0506_barghouthi.html

这是一个旧的,但我想大部分内容今天仍然有效

高温高压

于 2012-09-27T05:18:15.993 回答
0

确实在第一次连接时不会发生重新身份验证。但是,在实现扩展 Oracle11gDataStoreHelper 的 DataStoreHelper 时,您需要实现两种方法:

  1. doConnectionSetupPerTransaction 在重新认证时调用。
  2. 在第一次连接时调用的 doConnectionSetup。

在这两种方法中,您都可以调用 WSSubject.getCallerPrincipal() 来获取当前应用程序用户。然后,您可以使用 conn.unwrap(OracleConnection.class).setEndToEndMetrics() API。

如果使用 Oracle 12c 数据库和 JDBC 驱动程序,您可以使用 Connection.setClientInfo 代替 OracleConnection.setEndToEndMetrics。

于 2016-06-06T14:20:43.580 回答