Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit 83aeb96

Browse files
committed
#90 Added support for TrustManager
1 parent 19c2e13 commit 83aeb96

File tree

2 files changed

+23
-46
lines changed

2 files changed

+23
-46
lines changed

src/main/java/com/marklogic/client/ext/DatabaseClientConfig.java

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
package com.marklogic.client.ext;
22

3-
import javax.net.ssl.SSLContext;
4-
5-
import com.marklogic.client.DatabaseClientFactory.Authentication;
63
import com.marklogic.client.DatabaseClientFactory.SSLHostnameVerifier;
74

5+
import javax.net.ssl.SSLContext;
6+
import javax.net.ssl.X509TrustManager;
7+
88
/**
99
* Captures all the possible inputs used to construct an instance of DatabaseClient.
10-
*
11-
* The Authentication attribute is deprecated, as this class is deprecated in version 4.x of the Java Client API.
12-
* Use securityContextType and the constants defined in this class to define the particular kind of security context
13-
* that should be constructed.
1410
*/
1511
public class DatabaseClientConfig {
1612

@@ -25,9 +21,7 @@ public class DatabaseClientConfig {
2521
private String certFile;
2622
private String certPassword;
2723
private String externalName;
28-
29-
@Deprecated
30-
private Authentication authentication;
24+
private X509TrustManager trustManager;
3125

3226
public DatabaseClientConfig() {
3327
}
@@ -65,16 +59,6 @@ public String getPassword() {
6559
return password;
6660
}
6761

68-
@Deprecated
69-
public Authentication getAuthentication() {
70-
return authentication;
71-
}
72-
73-
@Deprecated
74-
public void setAuthentication(Authentication authentication) {
75-
this.authentication = authentication;
76-
}
77-
7862
public void setHost(String host) {
7963
this.host = host;
8064
}
@@ -146,4 +130,12 @@ public String getExternalName() {
146130
public void setExternalName(String externalName) {
147131
this.externalName = externalName;
148132
}
133+
134+
public X509TrustManager getTrustManager() {
135+
return trustManager;
136+
}
137+
138+
public void setTrustManager(X509TrustManager trustManager) {
139+
this.trustManager = trustManager;
140+
}
149141
}

src/main/java/com/marklogic/client/ext/DefaultConfiguredDatabaseClientFactory.java

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.marklogic.client.ext.DatabaseClientConfig;
77

88
import javax.net.ssl.SSLContext;
9+
import javax.net.ssl.X509TrustManager;
910

1011
/**
1112
* Default implementation for constructing a new instance of DatabaseClient based on the inputs in an instance of
@@ -38,7 +39,7 @@ public DatabaseClient newDatabaseClient(DatabaseClientConfig config) {
3839
SSLContext sslContext = config.getSslContext();
3940
DatabaseClientFactory.SSLHostnameVerifier verifier = config.getSslHostnameVerifier();
4041
if (sslContext != null) {
41-
securityContext = securityContext.withSSLContext(sslContext);
42+
securityContext = securityContext.withSSLContext(sslContext, config.getTrustManager());
4243
}
4344
if (verifier != null) {
4445
securityContext = securityContext.withSSLHostnameVerifier(verifier);
@@ -61,44 +62,28 @@ public DatabaseClient newDatabaseClient(DatabaseClientConfig config) {
6162
return DatabaseClientFactory.newClient(host, port, database, securityContext);
6263
}
6364

64-
/**
65-
* The Authentication shouldn't be set on the DatabaseClientConfig, but if it is, it's used instead of the value
66-
* of securityContextType.
67-
*
68-
* @param config
69-
* @return
70-
*/
71-
protected SecurityContextType determineSecurityContextType(DatabaseClientConfig config) {
72-
DatabaseClientFactory.Authentication auth = config.getAuthentication();
73-
if (auth != null) {
74-
if (DatabaseClientFactory.Authentication.BASIC.equals(auth)) {
75-
return SecurityContextType.BASIC;
76-
} else if (DatabaseClientFactory.Authentication.CERTIFICATE.equals(auth)) {
77-
return SecurityContextType.CERTIFICATE;
78-
} else if (DatabaseClientFactory.Authentication.KERBEROS.equals(auth)) {
79-
return SecurityContextType.KERBEROS;
80-
}
81-
return SecurityContextType.DIGEST;
82-
}
83-
return config.getSecurityContextType();
84-
}
8565

8666
protected DatabaseClientFactory.SecurityContext buildCertificateAuthContent(DatabaseClientConfig config) {
67+
X509TrustManager trustManager = config.getTrustManager();
68+
8769
String certFile = config.getCertFile();
8870
if (certFile != null) {
8971
try {
9072
if (config.getCertPassword() != null) {
91-
return new DatabaseClientFactory.CertificateAuthContext(certFile, config.getCertPassword());
73+
return new DatabaseClientFactory.CertificateAuthContext(certFile, config.getCertPassword(), trustManager);
9274
}
93-
return new DatabaseClientFactory.CertificateAuthContext(certFile);
75+
return new DatabaseClientFactory.CertificateAuthContext(certFile, trustManager);
9476
} catch (Exception ex) {
9577
throw new RuntimeException("Unable to build CertificateAuthContext: " + ex.getMessage(), ex);
9678
}
9779
}
80+
9881
DatabaseClientFactory.SSLHostnameVerifier verifier = config.getSslHostnameVerifier();
82+
9983
if (verifier != null) {
100-
return new DatabaseClientFactory.CertificateAuthContext(config.getSslContext(), verifier);
84+
return new DatabaseClientFactory.CertificateAuthContext(config.getSslContext(), verifier, trustManager);
10185
}
102-
return new DatabaseClientFactory.CertificateAuthContext(config.getSslContext());
86+
87+
return new DatabaseClientFactory.CertificateAuthContext(config.getSslContext(), trustManager);
10388
}
10489
}

0 commit comments

Comments
 (0)