我在使用Quarkus为Keycloak设置Oracle v$session属性时遇到问题。例如,使用jdbc连接,您可以执行以下操作:
Properties pro = new java.util.Properties();
pro.put("v$session.osuser", "MY_USER");
pro.put("v$session.machine", "DEPLOY_123");
pro.put("v$session.program", "P26D_s");
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
Class.forName(driverName).newInstance();
con = DriverManager.getConnection(Url, pro);
...
我尝试了什么?添加一个 quarkus.properties 文件,其中包含以下内容:
quarkus.datasource.jdbc.additional-jdbc-properties.connectionProperties="v$session.OSUSER=MY_USER"
到Keycloak /conf 目录,只是为了测试一个属性。如果我添加 quarkus.datasource.jdbc.additional-jdbc-properties.v$session.OSUSER=MY_USER,keycloak告诉我,DataSource没有属性的setter。这是正确的,考虑到以下类:https://docs.oracle.com/cd/E18283_01/appdev.112/e13995/oracle/jdbc/xa/client/OracleXADataSource.html,因此是 connectionProperties。但是docu没有告诉我任何关于v$session Properties的信息。至少我知道,他正在尝试应用属性。我正在测试以下方法:
- 在/opt/keycloak/conf中使用 quarkus.properties 构建Docker镜像
- 使用oracle-xe镜像启动docker compose
- 启动后,查看keycloak日志并查询Oracle DB中的SYS.V_$SESSION表,查看是否设置了OSUSER、PROGRAM或MACHINE。
有人有主意吗?干杯
1条答案
按热度按时间szqfcxe21#
最后,quarkus.properties做到了这一点,确保用小写字母书写属性,并用分号分隔属性。将文件复制到/opt/keycloak/conf。