Подключение к MongoDB с учетными данными - Micronaut - PullRequest
2 голосов
/ 03 октября 2019

Мы используем Micronaut для создания веб-приложения. Приложению необходимы учетные данные для подключения к службе Managed MongoDB. Из документации я вижу, что это можно сделать с помощью свойств application.xml, как указано ниже,

mongodb:
    uri: mongodb://username:password@localhost:27017/databaseName

Однако здесь учетные данные поддерживаются как часть свойств config.

В нашем сценарии учетные данные хранятся в зашифрованном хранилище, и их необходимо прочитать, прежде чем можно будет установить соединение с MongoDB.

Есть ли способ ввести учетные данные во время MongoClient? создание экземпляра, чтобы введенные учетные данные можно было использовать для подключения к экземпляру Managed MongoDB?

Мы используем micronaut-mongo-reactive клиент.

1 Ответ

1 голос
/ 04 октября 2019

В случае, если это кому-нибудь поможет, работает следующий подход !!

Создайте новую фабрику с аннотацией @Replaces, которая позволяет переопределить внедрение по умолчанию MongoClient. В этом классе читайте учетные данные из зашифрованного хранилища, а затем используйте его для формулировки строки подключения Mongo

@Factory
public class MongoClientFactory {

  private static final FluentLogger logger = FluentLogger.forEnclosingClass();

  @Inject EncryptedStoreService encryptedStoreService;

  @Singleton
  @Bean(preDestroy = "close")
  @Replaces(MongoClient.class)
  public MongoClient mongoClient() {

    MongoClient mongoClient = null;
    try {

    // Formulate a ConnectionString based on data read using the encryptedStoreService

      mongoClient = MongoClients.create(connectionString);

    } catch (IOException e) {
      logger.atSevere().log("Error occured", e);
    }

    return mongoClient;
  }
 } 

Love Micronaut !!

...