Quarkus: поставщик пользовательских учетных данных источника данных - PullRequest
1 голос
/ 24 апреля 2020

Как я могу создать пользовательский поставщик учетных данных источника данных, который, например, считывает учетные данные из файла на диске? Мне нужен способ установить учетные данные из кода. Я думаю, что это способ go в Quarkus.

quarkus.datasource.username = Я хочу установить это в коде

quarkus.datasource.password = Я хочу установить это в код

Я вижу только интеграцию хранилища hashicorp. Мне нужен способ сделать это в провайдере пользовательских учетных данных. Я вижу, что есть способ установить класс, который представляет вашего провайдера, но какой интерфейс должен реализовывать этот класс?

Из документов:

quarkus.datasource.credentials-provider =?

quarkus.datasource.credentials-provider-type =?

Тип поставщика учетных данных. Это значение @Named компонента поставщика учетных данных. Он используется для распознавания, если доступно несколько компонентов CredentialsProvider. Для Vault это: Vault-Credentials-провайдера. Нет необходимости, если доступен только один поставщик учетных данных.

Может кто-нибудь помочь с этим?

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

Интересно. Мы разработали этот контракт с учетом только Vault, поэтому интерфейс называется io.quarkus.vault.CredentialsProvider и находится в модуле quarkus-vault-spi.

При этом, я думаю, вы могли бы просто добавить, что модуль для вашего проекта (он не имеет зависимости от Vault). Тогда вы можете просто реализовать этот интерфейс, и все должно быть в порядке.

Ваш CredentialsProvider должен быть компонентом CDI, поэтому вы должны сделать его либо @Singleton, либо @ApplicationScoped.

Тогда вам просто нужно определить значение для quarkus.datasource.credentials-provider=<value here>. Имя передается поставщику регистрационных данных и используется в случае Vault.

В вашем случае его просто нужно определить.

Если это работает для вас, не могли бы вы открыть проблема в нашем трекере? Я думаю, что мы должны сделать этот интерфейс частью расширения источника данных, а не указывать Vault c.

ОБНОВЛЕНИЕ: Я создал пример проекта здесь: https://github.com/gsmet/quarkus-credentials-provider. Просто запустите mvn clean install (вам нужно Docker), и вы увидите, что ваш CredentialsProvider вызывается.

0 голосов
/ 24 апреля 2020

Да, o.quarkus.vault.CredentialsProvider должен быть нейтральным в HashiCorp Vault. Пожалуйста, смотрите эту проблему для некоторых указаний: https://github.com/quarkusio/quarkus/issues/6896#issuecomment -581014674

...