import org.apache.druid.security.basic.authentication.validator.LDAPCredentialsValidator;
import org.apache.druid.security.basic.BasicAuthLDAPConfig;
import org.apache.druid.server.security.AuthenticationResult;

public class LdapVariantPoC {
  public static void main(String[] args) {
    BasicAuthLDAPConfig config = new BasicAuthLDAPConfig(
        "ldap://127.0.0.1:1389",
        "cn=admin,dc=example,dc=org",
        new org.apache.druid.metadata.DefaultPasswordProvider("admin"),
        "dc=example,dc=org",
        "(uid=%s)",
        "uid",
        1000,
        600,
        3600,
        100
    );

    LDAPCredentialsValidator validator = new LDAPCredentialsValidator(
        config,
        new LDAPCredentialsValidator.LruBlockCache(3600, 3600, 100),
        null
    );

    String username = args[0];
    String password = args[1];
    AuthenticationResult result = validator.validateCredentials("ldap", "authz", username, password.toCharArray());
    if (result == null) {
      System.out.println("AUTH_NULL");
    } else {
      System.out.println("AUTH_OK: " + result.getIdentity());
    }
  }
}
