Мне нужно изменить старое приложение 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. Ваш код не должен был бы измениться.
Затем убедитесь, что администратор базы данных установил password_encryption = scram-sha-256 и измените пароль пользователя. Это должно быть все.
Вам нужно использовать более новый драйвер JDBC. 9.4.x ужасно устарела