[英]How do you use the MongoDB Java Driver in version 4.4 to connect to a replica set using SSL and password authentication?
如何使用 4.4 版中的 MongoDB Java 驅動程序連接到使用 SSL 和密碼驗證的副本集?
你能舉一些例子嗎?
為了使用 SSL,您需要在密鑰庫中擁有 CA 證書和私鑰(或者如果您更喜歡兩個不同的密鑰庫)。 雖然您需要設置一些 Java 系統屬性來聲明您的密鑰庫以及如何訪問它們,但所有其他參數都是通過MongoClientSettings.Builder
class 設置的。
下面有一個小示例,您可以使用 SSL 和基於密碼的身份驗證連接到 MongoDB 副本集:
public static MongoClient createMongoClient(MongoDBConnectionParameters parameters) {
MongoClientSettings.Builder builder = MongoClientSettings.builder();
if(parameters.getPassword() != null) {
// User name and password
MongoCredential mongoCredential = com.mongodb.MongoCredential.createCredential(parameters.getUser(),
parameters.getAuthDB(), parameters.getPassword().toCharArray());
builder.credential(mongoCredential);
}
if(parameters.getServerAddressList() != null) {
// using replica set
ArrayList<ServerAddress> serverAddresses = parameters.getServerAddressList().entrySet().stream()
.map(e -> new ServerAddress(e.getKey(), e.getValue())).collect(Collectors.toCollection(ArrayList::new));
builder.applyToClusterSettings(b -> b.hosts(serverAddresses));
} else {
String connectionString = String.format("mongodb://%s:%d/", parameters.getMongoServer(), parameters.getMongoPort());
builder.applyConnectionString(new ConnectionString(connectionString));
}
if(parameters.isTls()) {
// using SSL
builder.applyToSslSettings(b -> b.enabled(true));
setupSsl(parameters);
}
return MongoClients.create(builder.build());
}
private static void setupSsl(MongoDBConnectionParameters parameters) {
System.setProperty("javax.net.ssl.trustStore", parameters.getTrustStore().toString());
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
final String trustStorePassword = "thepassword";
System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword);
System.setProperty("javax.net.ssl.keyStore", parameters.getKeystoreFile().toString());
System.setProperty("javax.net.ssl.keyStoreType", "JKS");
String keystorePassword = "thepassword";
System.setProperty("javax.net.ssl.keyStorePassword", keystorePassword);
}
這是 Maven 與 MongoDB 驅動程序的依賴關系:
<!-- https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-sync -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.4.0</version>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.