code: public static ClientConfiguration createClient(final AuthScope authScope, final Credentials credentials,
              final List<Endpoint> endpoints, final List<DataProvider> providers) {
  
          final ClientConfiguration client = new ClientConfiguration();
  
          if (credentials != null && authScope != null) {
              final CredentialsProvider credsProvider = new BasicCredentialsProvider();
              credsProvider.setCredentials(authScope, credentials);
              client.setHttpClient(HttpClients.custom()
                      .setDefaultCredentialsProvider(credsProvider)
                      .useSystemProperties().build());
          }
  
          // manually add default Providers and Endpoints
          client.addProvider(new LinkedDataProvider());
          client.addProvider(new CacheProvider());
          client.addProvider(new RegexUriProvider());
          client.addProvider(new SPARQLProvider());
          client.addEndpoint(new LinkedDataEndpoint());
  
          // add any injected endpoints/providers
          endpoints.forEach(client::addEndpoint);
          providers.forEach(client::addProvider);
  
          return client;
      }
docs: Create a linked data client suitable for use with a Fedora Repository.
  @param authScope the authentication scope
  @param credentials the credentials
  @param endpoints additional endpoints to enable on the client
  @param providers additional providers to enable on the client
  @return a configuration for use with an LDClient