title: Creating and using a custom kafka connect configuration provider
body: <p>I have installed and tested kafka connect in distributed mode, it works now and it connects to the configured sink and reads from the configured source. 
  That being the case, I moved to enhance my installation. The one area I think needs immediate attention is the fact that to create a connector, the only available mean is through REST calls, this means I need to send my information through the wire, unprotected. 
  In order to secure this, kafka introduced the new ConfigProvider seen <a href="https://docs.confluent.io/current/connect/security.html#externalizing-secrets" rel="nofollow noreferrer">here</a>.
  This is helpful as it allows to set properties in the server and then reference them in the rest call, like so:</p>
  
  <pre><code>{
  .
  .
  "property":"${file:/path/to/file:nameOfThePropertyInFile}"
  .
  .
  }
  </code></pre>
  
  <p>This works really well, just by adding the property file on the server and adding the following config on the distributed.properties file:</p>
  
  <pre><code>config.providers=file   # multiple comma-separated provider types can be specified here
  config.providers.file.class=org.apache.kafka.common.config.provider.FileConfigProvider
  </code></pre>
  
  <p>While this solution works, it really does not help to easy my concerns regarding security, as the information now passed from being sent over the wire, to now be seating on a repository, with text on plain sight for everyone to see.
  The kafka team foresaw this issue and allowed clients to produce their own configuration providers implementing the interface ConfigProvider.
  I have created my own implementation and packaged in a jar, givin it the sugested final name:</p>
  
  <pre><code>META-INF/services/org.apache.kafka.common.config.ConfigProvider
  </code></pre>
  
  <p>and added the following entry in the distributed file:</p>
  
  <pre><code>config.providers=cust
  config.providers.cust.class=com.somename.configproviders.CustConfigProvider
  </code></pre>
  
  <p>However I am getting an error from connect, stating that a class implementing ConfigProvider, with the name: </p>
  
  <pre><code>com.somename.configproviders.CustConfigProvider
  </code></pre>
  
  <p>could not be found.
  I am at a loss now, because the documentation on their site is not explicit about how to configure custom config providers very well.</p>
  
  <p>Has someone worked on a similar issue and could provide some insight into this? Any help would be appreciated.</p>