如何在WSO2 Micro Integrator的DB连接池引用加密密码?
解决WSO2 ESB DB Mediator加密密码引用问题
方法一:直接在DB Mediator中引用加密属性
你无法直接在<password>标签中写入明文,但可以先将加密密码加载到上下文属性,再在连接池配置中引用该属性:
- 在DB Mediator执行前的Sequence节点中,获取加密密码到上下文:
<property expression="wso2:vault-lookup('db_password')" name="db_password" scope="default" type="STRING"/>
- 修改DB Mediator的连接池配置,通过表达式引用上下文属性:
<dbreport> <connection> <pool> <driver>com.mysql.cj.jdbc.Driver</driver> <url>jdbc:mysql://localhost:3306/wso2_sessions</url> <user>testUser</user> <!-- 引用上下文里的加密密码属性 --> <password expression="$ctx:db_password"/> </pool> </connection> <statement> <sql><![CDATA[my SQL statement]]></sql> </statement> </dbreport>
方法二:通过deployment.toml配置加密数据源(推荐)
将数据库连接池配置统一托管到deployment.toml,利用配置文件的加密支持,再在DB Mediator中直接引用数据源:
- 在
deployment.toml中添加加密数据源配置:
[database.custom_session_db] url = "jdbc:mysql://localhost:3306/wso2_sessions" username = "testUser" # 直接在配置中调用vault获取加密密码 password = "{wso2:vault-lookup('db_password')}" driver = "com.mysql.cj.jdbc.Driver" # 可选:配置连接池参数 pool_options.maxActive = 50 pool_options.maxWait = 60000 pool_options.testOnBorrow = true
- 在DB Mediator中引用该数据源,无需重复编写连接池细节:
<dbreport> <connection> <!-- 引用配置的数据源,格式为jdbc/[数据源名称] --> <datasource>jdbc/custom_session_db</datasource> </connection> <statement> <sql><![CDATA[my SQL statement]]></sql> </statement> </dbreport>
两种方法对比:方法一适合需要动态调整连接参数的场景;方法二更符合WSO2配置规范,便于统一管理所有数据源,推荐优先使用。
内容的提问来源于stack exchange,提问作者Cristiano
相关产品推荐
相关产品推荐

