Используйте SCRAM-SHA-256 в старом приложении Java 8 + Spring для подключения к postgresql/postgis

Мне нужно изменить старое приложение java 8, которое подключается к базе данных Postgres (PostGIS) через Spring.

Мне нужно рассмотреть возможность аутентификации через 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(...) с помощью зашифрованного ключа?

Более того, в POM.xml есть (groupId/artifactId/version) org.postgresql/postgresql/9.4.1212 и net.postgis/postgis-jdbc/2.1.7.2. Возможно, мне стоит перейти на более новые версии.

Спасибо!

Вам нужно использовать более новый драйвер JDBC. 9.4.x ужасно устарела

a_horse_with_no_name 20.10.2022 11:01

Да ! Теперь он обновлен. Спасибо !

FCA 20.10.2022 16:12
0
2
109
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На стороне клиента вам ничего не нужно делать, кроме как использовать менее старую версию драйвера JDBC. Ваш код не должен был бы измениться.

Затем убедитесь, что администратор базы данных установил password_encryption = scram-sha-256 и измените пароль пользователя. Это должно быть все.

Другие вопросы по теме