【问题标题】:Use SCRAM-SHA-256 on old Java 8 app + Spring to connect to postgresql/postgis在旧的 Java 8 应用 + Spring 上使用 SCRAM-SHA-256 连接到 postgresql/postgis
【发布时间】:2022-10-20 17:19:06
【问题描述】:

我必须修改通过 Spring 连接到 Postgres (PostGIS) 数据库的旧 java 8 应用程序。

我需要考虑通过 SCRAM-SHA-256 进行身份验证。我不管理服务器部分,只管理应用程序部分。

目前,我正在实例化一个 PGPoolingDataSource 对象来创建连接(URL + 用户 + 密码)。然后,它在 JdbcTemplate 对象中使用,如下所示:

public JdbcTemplate createJdbcTemplate(ConnectionInfo cnxInfos)
{
    return new JdbcTemplate(createDataSource(cnxInfos));
}

public DataSource createDataSource(ConnectionInfo cnxInfos)
{
    PGPoolingDataSource ds = new PGPoolingDataSource();
    ds.setUrl(cnxInfos.url);
    ds.setUser(cnxInfos.user);
    ds.setPassword(cnxInfos.pwd);
    return ds;
}

关于此身份验证主题还有另一篇文章,但通过基本的 DriverManager 而不是 Spring。有没有一种解决方案可以让我不必更改所有 API?也许另一个 DataSource 子类?或者只是使用加密密钥更改赋予 ds.setPassword(...) 的 de 值?

此外,在 POM.xml 中有 (groupId/artifactId/version) org.postgresql/postgresql/9.4.1212 和 net.postgis/postgis-jdbc/2.1.7.2。也许我应该升级到新版本。

谢谢!

【问题讨论】:

  • 您需要使用更新的 JDBC 驱动程序。 9.4.x 已经过时了
  • 是的 !现在已经升级了。谢谢 !

标签: spring postgresql java-8 postgis sha256


【解决方案1】:

除了使用较旧版本的 JDBC 驱动程序外,您无需在客户端执行任何操作。您的代码不必更改。

然后确保 DBA 设置password_encryption = scram-sha-256 并更改用户密码。这应该就是全部了。

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 2021-11-27
    • 1970-01-01
    • 2022-07-14
    • 2019-07-08
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多