Java 我可以从连接池设置JDBC连接的密码吗?(Tomcat 5.5.17)

Java 我可以从连接池设置JDBC连接的密码吗?(Tomcat 5.5.17),java,tomcat,connection-pooling,Java,Tomcat,Connection Pooling,我在tomcat server context.xml中设置了一个连接池(多个webapps使用的连接似乎是最好的地方) 但是,我不喜欢在文件中硬编码密码。我是否有办法从其他地方检索密码(安全密码存储),并在建立池连接时实用地设置密码 多谢各位 Ryan您可能希望为web应用程序实现单一登录(例如使用)。请注意,对于一个小项目来说,这可能是一个很大的开销,但这应该可以解决您的问题。除了此解决方案之外,还有一些特定于供应商的应用程序,如Oracle提供的安全外部密码存储。另一个依赖于平台的示例:您

我在tomcat server context.xml中设置了一个连接池(多个webapps使用的连接似乎是最好的地方)

但是,我不喜欢在文件中硬编码密码。我是否有办法从其他地方检索密码(安全密码存储),并在建立池连接时实用地设置密码

多谢各位


Ryan

您可能希望为web应用程序实现单一登录(例如使用)。请注意,对于一个小项目来说,这可能是一个很大的开销,但这应该可以解决您的问题。除了此解决方案之外,还有一些特定于供应商的应用程序,如Oracle提供的安全外部密码存储。另一个依赖于平台的示例:您可以配置PostgreSQL pg_hba.conf。请尝试以下身份验证选项:

  • 使用SSL客户端进行身份验证 证书
  • 使用可插拔的 身份验证模块(PAM) 运营商提供的服务 系统
  • 使用LDAP进行身份验证 服务器
  • 。。。还有很多其他的

编辑:在其中一个项目中,我们使用3DES加密密码。是的,密钥是在应用程序中硬编码的:)

我相信您正在寻找,您可以对工厂进行编码以创建javax.sql.DataSource对象或基于DBCP(或类似)的连接池外观对象,并使用自定义代码获取和设置连接的用户名/密码


请注意,如果您正在寻找额外的安全性--实用的方法是使用文件系统安全性来保护context.xml文件,因为添加额外的层(例如资源工厂的自定义实现)不会使系统更安全,由于您仍然需要在某处配置安全密码存储的密码,您最终会遇到鸡或蛋的问题。

非常感谢您的回复,我感谢您花时间回答。然而,我试图坚持使用标准的tomcat DBCP,并简单地“插入”我的密码检索,因此我将下面的答案标记为已接受的解决方案。非常感谢。RyanTake看一看本书的最后一节