Hi, I'm working with a product which includes solr under the covers, and this has been secured using a custom authentication scheme. The admin UI on port 8983 works correct once authenticated. I've also hacked the zkcli.sh script thusly:
SOLR_ZK_CREDS_AND_ACLS="-DzkACLProvider=com.i2group.disco.search.solr.common.zookeeper.auth.internal.EncodedZkCredentialsACLProvider \ -DzkCredentialsProvider=com.i2group.disco.search.solr.common.zookeeper.auth.internal.EncodedZkCredentialsProvider \ -Dsolr.solr.home=/data/cluster-nodes/clusters/is_cluster/nodes/node1" CLASSPATH= for i in $(ls /i2a/deploy/wlp/usr/servers/awc/apps/awc.war/WEB-INF/lib/*.jar); do CLASSPATH=$CLASSPATH:$i done for i in $(ls /i2a/deploy/wlp/usr/shared/resources/i2-common/lib/*.jar); do CLASSPATH=$CLASSPATH:$i done PATH=$JAVA_HOME/bin:$PATH /opt/IBM/i2analyze/deploy/java/bin/java $SOLR_ZK_CREDS_AND_ACLS -Dlog4j.configuration=$log4j_config \ -classpath $CLASSPATH org.apache.solr.cloud.ZkCLI ${1+"$@"} ......and it works. The credentials to authenticate to solr are stored in a file in solr.solr.home - which is why that system property is needed. I've also hacked the launch script for dbvis to add the properties: #!/bin/sh # Uncomment the following line to override the JVM search sequence # INSTALL4J_JAVA_HOME_OVERRIDE= # Uncomment the following line to add additional VM parameters # INSTALL4J_ADD_VM_PARAMS= INSTALL4J_ADD_VM_PARAMS="-DzkACLProvider=com.i2group.disco.search.solr.common.zookeeper.auth.internal.EncodedZkCredentialsACLProvider \ -DzkCredentialsProvider=com.i2group.disco.search.solr.common.zookeeper.auth.internal.EncodedZkCredentialsProvider \ -Dsolr.solr.home=/data/cluster-nodes/clusters/is_cluster/nodes/node1" (no, adding these as database properties doesn't get me authenticated to zookeeper) .....and now when I try to connect, DbVisualizer seems to connect to zookeeper, but then I get: 2017-03-16 06:06:07.375 INFO 897 [ExecutorRunner-pool-3-thread-1 - H.??] Exception while connecting kstephe-eia-reco org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://kstephe-eia-reco.softlayer.com:8983/solr: Expected mime type application/octet-stream but got text/html. <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>Error 401 Unauthorized request, Response code: 401</title> </head> <body><h2>HTTP ERROR 401</h2> <p>Problem accessing /solr/admin/info/system. Reason: <pre> Unauthorized request, Response code: 401</pre></p> </body> </html> at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:560) at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:261) at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:250) at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:149) at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:942) at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:957) at org.apache.solr.client.solrj.io.sql.DatabaseMetaDataImpl.getDatabaseProductVersion(DatabaseMetaDataImpl.java:124) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95) .....and the URL is weird, because its talking to port 8983 - which is solr, not zookeeper. Once authenticated to solr, I can validate that the /solr/admin/info/system URL responds correctly, but the problem seems to be that when DbVisualizer asks zookeeper for the db metadata, it doesn't seem to know how to authenticate to solr. So.....(1) is there something I can do to fix things or (2) is there a problem in the solr / zookeeper code or (3) are the problems somewhere in zkCredentialsProvider or zkACLProvider (where I can't fix a thing)? Thanks Marvin the paranoid