Search in sources :

Example 31 with MongoClientSettings

use of com.mongodb.MongoClientSettings in project mongo-java-driver by mongodb.

the class ClientSideEncryptionAutoEncryptionSettingsTour method main.

/**
 * Run this main method to see the output of this quick example.
 *
 * Requires the mongodb-crypt library in the class path and mongocryptd on the system path.
 *
 * @param args ignored args
 */
public static void main(final String[] args) {
    // This would have to be the same master key as was used to create the encryption key
    final byte[] localMasterKey = new byte[96];
    new SecureRandom().nextBytes(localMasterKey);
    Map<String, Map<String, Object>> kmsProviders = new HashMap<String, Map<String, Object>>() {

        {
            put("local", new HashMap<String, Object>() {

                {
                    put("key", localMasterKey);
                }
            });
        }
    };
    String keyVaultNamespace = "admin.datakeys";
    ClientEncryptionSettings clientEncryptionSettings = ClientEncryptionSettings.builder().keyVaultMongoClientSettings(MongoClientSettings.builder().applyConnectionString(new ConnectionString("mongodb://localhost")).build()).keyVaultNamespace(keyVaultNamespace).kmsProviders(kmsProviders).build();
    ClientEncryption clientEncryption = ClientEncryptions.create(clientEncryptionSettings);
    BsonBinary dataKeyId = clientEncryption.createDataKey("local", new DataKeyOptions());
    final String base64DataKeyId = Base64.getEncoder().encodeToString(dataKeyId.getData());
    final String dbName = "test";
    final String collName = "coll";
    AutoEncryptionSettings autoEncryptionSettings = AutoEncryptionSettings.builder().keyVaultNamespace(keyVaultNamespace).kmsProviders(kmsProviders).schemaMap(new HashMap<String, BsonDocument>() {

        {
            put(dbName + "." + collName, // Need a schema that references the new data key
            BsonDocument.parse("{" + "  properties: {" + "    encryptedField: {" + "      encrypt: {" + "        keyId: [{" + "          \"$binary\": {" + "            \"base64\": \"" + base64DataKeyId + "\"," + "            \"subType\": \"04\"" + "          }" + "        }]," + "        bsonType: \"string\"," + "        algorithm: \"AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic\"" + "      }" + "    }" + "  }," + "  \"bsonType\": \"object\"" + "}"));
        }
    }).build();
    MongoClientSettings clientSettings = MongoClientSettings.builder().autoEncryptionSettings(autoEncryptionSettings).build();
    MongoClient mongoClient = MongoClients.create(clientSettings);
    MongoCollection<Document> collection = mongoClient.getDatabase("test").getCollection("coll");
    // Clear old data
    collection.drop();
    collection.insertOne(new Document("encryptedField", "123456789"));
    System.out.println(collection.find().first().toJson());
    // release resources
    mongoClient.close();
}
Also used : HashMap(java.util.HashMap) BsonBinary(org.bson.BsonBinary) ClientEncryption(com.mongodb.client.vault.ClientEncryption) SecureRandom(java.security.SecureRandom) ConnectionString(com.mongodb.ConnectionString) MongoClientSettings(com.mongodb.MongoClientSettings) Document(org.bson.Document) BsonDocument(org.bson.BsonDocument) DataKeyOptions(com.mongodb.client.model.vault.DataKeyOptions) MongoClient(com.mongodb.client.MongoClient) ClientEncryptionSettings(com.mongodb.ClientEncryptionSettings) AutoEncryptionSettings(com.mongodb.AutoEncryptionSettings) ConnectionString(com.mongodb.ConnectionString) HashMap(java.util.HashMap) Map(java.util.Map)

Example 32 with MongoClientSettings

use of com.mongodb.MongoClientSettings in project mongo-java-driver by mongodb.

the class ClientSideEncryptionSimpleTour method main.

/**
 * Run this main method to see the output of this quick example.
 *
 * Requires the mongodb-crypt library in the class path and mongocryptd on the system path.
 * Assumes the schema has already been created in MongoDB.
 *
 * @param args ignored args
 */
public static void main(final String[] args) {
    // This would have to be the same master key as was used to create the encryption key
    final byte[] localMasterKey = new byte[96];
    new SecureRandom().nextBytes(localMasterKey);
    Map<String, Map<String, Object>> kmsProviders = new HashMap<String, Map<String, Object>>() {

        {
            put("local", new HashMap<String, Object>() {

                {
                    put("key", localMasterKey);
                }
            });
        }
    };
    String keyVaultNamespace = "admin.datakeys";
    AutoEncryptionSettings autoEncryptionSettings = AutoEncryptionSettings.builder().keyVaultNamespace(keyVaultNamespace).kmsProviders(kmsProviders).build();
    MongoClientSettings clientSettings = MongoClientSettings.builder().autoEncryptionSettings(autoEncryptionSettings).build();
    MongoClient mongoClient = MongoClients.create(clientSettings);
    MongoCollection<Document> collection = mongoClient.getDatabase("test").getCollection("coll");
    // Clear old data
    collection.drop();
    collection.insertOne(new Document("encryptedField", "123456789"));
    System.out.println(collection.find().first().toJson());
    // release resources
    mongoClient.close();
}
Also used : HashMap(java.util.HashMap) SecureRandom(java.security.SecureRandom) MongoClientSettings(com.mongodb.MongoClientSettings) Document(org.bson.Document) MongoClient(com.mongodb.client.MongoClient) AutoEncryptionSettings(com.mongodb.AutoEncryptionSettings) Map(java.util.Map) HashMap(java.util.HashMap)

Example 33 with MongoClientSettings

use of com.mongodb.MongoClientSettings in project spring-boot by spring-projects.

the class MongoMetricsAutoConfigurationTests method getConnectionPoolListenersFromClient.

private List<ConnectionPoolListener> getConnectionPoolListenersFromClient(final AssertableApplicationContext context) {
    MongoClientSettings mongoClientSettings = getActualMongoClientSettingsUsedToConstructClient(context);
    ConnectionPoolSettings connectionPoolSettings = mongoClientSettings.getConnectionPoolSettings();
    return connectionPoolSettings.getConnectionPoolListeners();
}
Also used : MongoClientSettings(com.mongodb.MongoClientSettings) ConnectionPoolSettings(com.mongodb.connection.ConnectionPoolSettings)

Example 34 with MongoClientSettings

use of com.mongodb.MongoClientSettings in project spring-boot by spring-projects.

the class MongoClientFactorySupportTests method allMongoClientSettingsCanBeSet.

@Test
void allMongoClientSettingsCanBeSet() {
    MongoClientSettings.Builder builder = MongoClientSettings.builder();
    builder.applyToSocketSettings((settings) -> {
        settings.connectTimeout(1000, TimeUnit.MILLISECONDS);
        settings.readTimeout(1000, TimeUnit.MILLISECONDS);
    }).applyToServerSettings((settings) -> {
        settings.heartbeatFrequency(10001, TimeUnit.MILLISECONDS);
        settings.minHeartbeatFrequency(501, TimeUnit.MILLISECONDS);
    }).applyToConnectionPoolSettings((settings) -> {
        settings.maxWaitTime(120001, TimeUnit.MILLISECONDS);
        settings.maxConnectionLifeTime(60000, TimeUnit.MILLISECONDS);
        settings.maxConnectionIdleTime(60000, TimeUnit.MILLISECONDS);
    }).applyToSslSettings((settings) -> settings.enabled(true)).applicationName("test");
    MongoClientSettings settings = builder.build();
    T client = createMongoClient(settings);
    MongoClientSettings wrapped = getClientSettings(client);
    assertThat(wrapped.getSocketSettings().getConnectTimeout(TimeUnit.MILLISECONDS)).isEqualTo(settings.getSocketSettings().getConnectTimeout(TimeUnit.MILLISECONDS));
    assertThat(wrapped.getSocketSettings().getReadTimeout(TimeUnit.MILLISECONDS)).isEqualTo(settings.getSocketSettings().getReadTimeout(TimeUnit.MILLISECONDS));
    assertThat(wrapped.getServerSettings().getHeartbeatFrequency(TimeUnit.MILLISECONDS)).isEqualTo(settings.getServerSettings().getHeartbeatFrequency(TimeUnit.MILLISECONDS));
    assertThat(wrapped.getServerSettings().getMinHeartbeatFrequency(TimeUnit.MILLISECONDS)).isEqualTo(settings.getServerSettings().getMinHeartbeatFrequency(TimeUnit.MILLISECONDS));
    assertThat(wrapped.getApplicationName()).isEqualTo(settings.getApplicationName());
    assertThat(wrapped.getConnectionPoolSettings().getMaxWaitTime(TimeUnit.MILLISECONDS)).isEqualTo(settings.getConnectionPoolSettings().getMaxWaitTime(TimeUnit.MILLISECONDS));
    assertThat(wrapped.getConnectionPoolSettings().getMaxConnectionLifeTime(TimeUnit.MILLISECONDS)).isEqualTo(settings.getConnectionPoolSettings().getMaxConnectionLifeTime(TimeUnit.MILLISECONDS));
    assertThat(wrapped.getConnectionPoolSettings().getMaxConnectionIdleTime(TimeUnit.MILLISECONDS)).isEqualTo(settings.getConnectionPoolSettings().getMaxConnectionIdleTime(TimeUnit.MILLISECONDS));
    assertThat(wrapped.getSslSettings().isEnabled()).isEqualTo(settings.getSslSettings().isEnabled());
}
Also used : ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) Arrays(java.util.Arrays) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) BDDMockito.then(org.mockito.BDDMockito.then) AnnotationConfigApplicationContext(org.springframework.context.annotation.AnnotationConfigApplicationContext) TimeUnit(java.util.concurrent.TimeUnit) Test(org.junit.jupiter.api.Test) TestPropertyValues(org.springframework.boot.test.util.TestPropertyValues) Configuration(org.springframework.context.annotation.Configuration) List(java.util.List) EnableConfigurationProperties(org.springframework.boot.context.properties.EnableConfigurationProperties) MongoClientSettings(com.mongodb.MongoClientSettings) Mockito.mock(org.mockito.Mockito.mock) MongoClientSettings(com.mongodb.MongoClientSettings) Test(org.junit.jupiter.api.Test)

Example 35 with MongoClientSettings

use of com.mongodb.MongoClientSettings in project spring-boot by spring-projects.

the class MongoPropertiesClientSettingsBuilderCustomizerTests method hostCanBeCustomized.

@Test
void hostCanBeCustomized() {
    this.properties.setHost("mongo.example.com");
    MongoClientSettings settings = customizeSettings();
    List<ServerAddress> allAddresses = getAllAddresses(settings);
    assertThat(allAddresses).hasSize(1);
    assertServerAddress(allAddresses.get(0), "mongo.example.com", 27017);
}
Also used : ServerAddress(com.mongodb.ServerAddress) MongoClientSettings(com.mongodb.MongoClientSettings) Test(org.junit.jupiter.api.Test)

Aggregations

MongoClientSettings (com.mongodb.MongoClientSettings)75 Test (org.junit.jupiter.api.Test)24 BsonString (org.bson.BsonString)21 Map (java.util.Map)20 Test (org.junit.Test)20 HashMap (java.util.HashMap)19 Document (org.bson.Document)19 BsonDocument (org.bson.BsonDocument)18 ServerAddress (com.mongodb.ServerAddress)17 AutoEncryptionSettings (com.mongodb.AutoEncryptionSettings)14 Before (org.junit.Before)14 MongoNamespace (com.mongodb.MongoNamespace)13 ClientEncryptionSettings (com.mongodb.ClientEncryptionSettings)12 ConnectionString (com.mongodb.ConnectionString)12 MongoClientFactoryBean (org.springframework.data.mongodb.core.MongoClientFactoryBean)10 Block (com.mongodb.Block)8 Fixture.getMongoClientSettingsBuilder (com.mongodb.client.Fixture.getMongoClientSettingsBuilder)8 SecureRandom (java.security.SecureRandom)8 TimeUnit (java.util.concurrent.TimeUnit)8 ClusterFixture.isServerlessTest (com.mongodb.ClusterFixture.isServerlessTest)7