diff --git a/solr/pom.xml b/solr/pom.xml index a97baeb257b988cd680468dbc4a50196976cecfc..a8d18bedab6df3df70097d1151bb9bd2f8422683 100644 --- a/solr/pom.xml +++ b/solr/pom.xml @@ -48,6 +48,12 @@ LICENSE file. <artifactId>solr-solrj</artifactId> <version>${solr.version}</version> </dependency> + <!-- commons-codec required for Solr Kerberos support --> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <version>1.10</version> + </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> diff --git a/solr/src/main/java/com/yahoo/ycsb/db/solr/SolrClient.java b/solr/src/main/java/com/yahoo/ycsb/db/solr/SolrClient.java index f6a78e91e37c40953535660718599cbdb852702d..4232221bb640cc7b77d97019be4b1934899cfd4e 100644 --- a/solr/src/main/java/com/yahoo/ycsb/db/solr/SolrClient.java +++ b/solr/src/main/java/com/yahoo/ycsb/db/solr/SolrClient.java @@ -25,7 +25,9 @@ import com.yahoo.ycsb.StringByteIterator; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.impl.CloudSolrClient; +import org.apache.solr.client.solrj.impl.HttpClientUtil; import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.solr.client.solrj.impl.Krb5HttpClientConfigurer; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.UpdateResponse; import org.apache.solr.client.solrj.SolrServerException; @@ -71,6 +73,13 @@ public class SolrClient extends DB { .parseInt(props.getProperty("solr.commit.within.time", DEFAULT_COMMIT_WITHIN_TIME)); batchMode = Boolean.parseBoolean(props.getProperty("solr.batch.mode", DEFAULT_BATCH_MODE)); + + String jaasConfPath = props.getProperty("solr.jaas.conf.path"); + if(jaasConfPath != null) { + System.setProperty("java.security.auth.login.config", jaasConfPath); + HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer()); + } + // Check if Solr cluster is running in SolrCloud or Stand-alone mode Boolean cloudMode = Boolean.parseBoolean(props.getProperty("solr.cloud", DEFAULT_CLOUD_MODE)); System.err.println("Solr Cloud Mode = " + cloudMode); diff --git a/solr6/pom.xml b/solr6/pom.xml index d4f947d1dec5363d36d9e3d0a2b9504239dd2ae6..42cd4e5a0fff59729400e91fe51ad3e9c3fabb74 100644 --- a/solr6/pom.xml +++ b/solr6/pom.xml @@ -48,6 +48,12 @@ LICENSE file. <artifactId>solr-solrj</artifactId> <version>${solr6.version}</version> </dependency> + <!-- commons-codec required for Solr Kerberos support --> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <version>1.10</version> + </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> diff --git a/solr6/src/main/java/com/yahoo/ycsb/db/solr6/SolrClient.java b/solr6/src/main/java/com/yahoo/ycsb/db/solr6/SolrClient.java index 0f18fa21e4093edfb4674465fef57f3edfd5f3a4..50346b7841ec375bb51ead1644f2d99b711cc15c 100644 --- a/solr6/src/main/java/com/yahoo/ycsb/db/solr6/SolrClient.java +++ b/solr6/src/main/java/com/yahoo/ycsb/db/solr6/SolrClient.java @@ -25,7 +25,9 @@ import com.yahoo.ycsb.StringByteIterator; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.impl.CloudSolrClient; +import org.apache.solr.client.solrj.impl.HttpClientUtil; import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.solr.client.solrj.impl.Krb5HttpClientConfigurer; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.UpdateResponse; import org.apache.solr.client.solrj.SolrServerException; @@ -71,6 +73,12 @@ public class SolrClient extends DB { .parseInt(props.getProperty("solr.commit.within.time", DEFAULT_COMMIT_WITHIN_TIME)); batchMode = Boolean.parseBoolean(props.getProperty("solr.batch.mode", DEFAULT_BATCH_MODE)); + String jaasConfPath = props.getProperty("solr.jaas.conf.path"); + if(jaasConfPath != null) { + System.setProperty("java.security.auth.login.config", jaasConfPath); + HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer()); + } + // Check if Solr cluster is running in SolrCloud or Stand-alone mode Boolean cloudMode = Boolean.parseBoolean(props.getProperty("solr.cloud", DEFAULT_CLOUD_MODE)); System.err.println("Solr Cloud Mode = " + cloudMode);