Maybe something like this (I omitted a lot of things you'll have to do,
like passing zk or the list of hosts):
static class CustomCloudSolrClient extends CloudSolrClient {
protected CustomCloudSolrClient(CustomCloudSolrClientBuilder builder) {
super(builder);
}
@Override
public NamedList<Object> request(SolrRequest request, String
collection) throws SolrServerException, IOException {
// your logic here to figure out which credentials to use...
String user = "user";
String pass = "pass";
request.setBasicAuthCredentials(user, pass);
return super.request(request, collection);
}
}
static class CustomCloudSolrClientBuilder extends CloudSolrClient.Builder {
@Override
public CloudSolrClient build() {
return new CustomCloudSolrClient(this);
}
}
public static void main(String[] args) {
CloudSolrClient c = new CustomCloudSolrClientBuilder().build();
...
}
Do consider that "request" method is called per request, make sure whatever
logic you have there is not super expensive.
On Wed, Mar 3, 2021 at 10:48 AM Subhajit Das <[email protected]>
wrote:
> Hi Thomas,
>
> Thanks. Can you please also share a sample of code to configure the client
> with your workaround?
>
> From: Tomás Fernández Löbbe<mailto:[email protected]>
> Sent: 04 March 2021 12:05 AM
> To: [email protected]<mailto:[email protected]>
> Subject: Re: Programmatic Basic Auth on CloudSolrClient
>
> As far as I know the current OOTB options are system properties or
> per-request (which would allow you to use different per collection, but
> probably not ideal if you do different types of requests from different
> parts of your code). A workaround (which I've used in the past) is to have
> a custom client that overrides and sets the credentials in the "request"
> method (you can put whatever logic there to identify which credentials to
> use). I recently created https://issues.apache.org/jira/browse/SOLR-15154
> and https://issues.apache.org/jira/browse/SOLR-15155 to try to address
> this
> issue in future releases.
>
> On Wed, Mar 3, 2021 at 5:42 AM Subhajit Das <[email protected]>
> wrote:
>
> >
> > Hi There,
> >
> > Is there any way to programmatically set basic authentication credential
> > on CloudSolrClient?
> >
> > The only documentation available is to use system property. This is not
> > useful if two collection required two separate set of credentials and
> they
> > are parallelly accessed.
> > Thanks in advance.
> >
>
>