Аутентификация базы данных AWS IAM с использованием пула соединений Java - PullRequest
0 голосов
/ 08 мая 2018

Я ищу пул соединений с базой данных Java, который позволил бы мне использовать аутентификацию базы данных AWS IAM для моего Aurora MySQL.Пул должен быть в состоянии работать с файлом Tomcat context.xml.

Я посмотрел на Tomcat DBCP, dbcp2, HikariCP и c3p0.Но все они, кажется, предполагают, что имя пользователя и пароль известны при запуске приложения и не изменяются в течение срока службы приложения.

Для аутентификации базы данных IAM учетные данные меняются каждые 15 минут, поэтому пулу необходимо запрашивать AWS.IAM для новых учетных данных при создании новых подключений (учетные данные могут быть кэшированы в течение нескольких минут.).

Реализовано ли это в каком-либо пуле подключений Java?Или у вас есть идея, как заставить это работать?

1 Ответ

0 голосов
/ 19 марта 2019

У меня недавно была такая же проблема .... Я использую пул соединений HikariCP, и до сих пор у него нет такой поддержки. К счастью, я нашел PR с помощью этого инструмента:

https://github.com/brettwooldridge/HikariCP/pull/1335

Я рекомендую вам сделать проект форка и использовать его до тех пор, пока официальный репозиторий не примет этот PR.

Моя реализация этого:

public DataSource setup() throws Exception {
Supplier<String> passwordSupplier = () -> {
    return this.generateAuthToken(host, port, user);
}; 
com.zaxxer.hikari.HikariDataSource dataSource = new com.zaxxer.hikari.HikariDataSource();
dataSource.setPasswordSupplier(passwordSupplier); ...

Очень важно включить это в конфигурацию вашего пула:

dataSource.setMaxLifetime(15 * 60 * 1000); 

Поскольку ваши подключения к пулу не могут существовать более 15 минут с помощью RDS Iam Auth

Удачи.

...