66import com .marklogic .client .ext .DatabaseClientConfig ;
77
88import 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