我可以设置连接池中的 JDBC 连接的密码吗? (雄猫 5.5.17)

发布于 2024-08-21 09:23:51 字数 163 浏览 5 评论 0原文

我在 tomcat 服务器 context.xml 中设置了一个连接池(多个 Web 应用程序使用的连接,因此似乎是它的最佳位置)。

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

谢谢瑞安

I have a connection pool set in the tomcat server context.xml (connection used by several webapps so seems the best place for it).

However, I don't like having passwords hard-coded in the file. Is there any way for me to retrieve the password from elsewhere (secure password store) and set it pragmatically at the time the pooled connections are established?

Thank you

Ryan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挽清梦 2024-08-28 09:23:51

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

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

I believe you are looking for Custom Resource Factory, you can code your factory to create javax.sql.DataSource object or a DBCP (or such) based connection pooling facade object, and have your custom code for getting and setting the username/password for the connection.

Do note that if you're looking for extra security -- the pragmatic way would be to use filesystem security for securing your context.xml file, as adding extra layers (such as your custom implementation for the resource factory), won't make the system more secure, as you still need the password for the secure password store configured somewhere -- you'll end up getting the chicken or the egg problem.

゛时过境迁 2024-08-28 09:23:51

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

  • 使用 SSL 客户端进行身份验证
    证书。
  • 使用可插入式进行身份验证
    身份验证模块 (PAM)
    运营商提供的服务
    系统。
  • 使用 LDAP 进行身份验证
    服务器。
  • ...以及许多其他

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

You might want to implement a single sign-on for your web application (e.g. using JOSSO). Note that it might be a significant overhead for a small project, but this should solve your problem. Apart from this solution, there are vendor specific applications like Secure External Password Store from Oracle. Another platform dependent example: you can configure PostgreSQL pg_hba.conf. Try the following authentication options:

  • Authenticate using SSL client
    certificates.
  • Authenticate using the Pluggable
    Authentication Modules (PAM)
    service provided by the operating
    system.
  • Authenticate using an LDAP
    server.
  • ... and many others

Edit: In one of the projects we used 3DES to encrypt the password. And yes, the key was hardcoded in application :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文