static SaslClientAuthenticationProviders instantiate(Configuration conf) {
    ServiceLoader<SaslClientAuthenticationProvider> loader =
      ServiceLoader.load(SaslClientAuthenticationProvider.class,
        SaslClientAuthenticationProviders.class.getClassLoader());
    HashMap<Byte, SaslClientAuthenticationProvider> providerMap = new HashMap<>();
    for (SaslClientAuthenticationProvider provider : loader) {
      addProviderIfNotExists(provider, providerMap);
    }

    addExplicitProviders(conf, providerMap);

    Collection<SaslClientAuthenticationProvider> providers =
      Collections.unmodifiableCollection(providerMap.values());

    if (LOG.isTraceEnabled()) {
      String loadedProviders = providers.stream().map((provider) -> provider.getClass().getName())
        .collect(Collectors.joining(", "));
      LOG.trace("Found SaslClientAuthenticationProviders {}", loadedProviders);
    }

    AuthenticationProviderSelector selector = instantiateSelector(conf, providers);
    return new SaslClientAuthenticationProviders(providers, selector);
  }
Instantiates all client authentication providers and returns an instance of
{@link SaslClientAuthenticationProviders}.
hbase-client/src/main/java/org/apache/hadoop/hbase/security/provider/SaslClientAuthenticationProviders.java