AMBARI-18860. LDAPS must be used to communicate with an Active Directory when Kerberos is being enabled (BE).(vbrodetskyi)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5d7824ea Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5d7824ea Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5d7824ea Branch: refs/heads/branch-feature-AMBARI-18634 Commit: 5d7824ea3e6689e910ebc03b9bfe408cd4d30a15 Parents: f1200b7 Author: Vitaly Brodetskyi <[email protected]> Authored: Sun Nov 13 21:49:58 2016 +0200 Committer: Vitaly Brodetskyi <[email protected]> Committed: Sun Nov 13 21:49:58 2016 +0200 ---------------------------------------------------------------------- .../kerberos/ADKerberosOperationHandler.java | 3 +++ .../kerberos/ADKerberosOperationHandlerTest.java | 14 ++++++++++++++ 2 files changed, 17 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/5d7824ea/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/ADKerberosOperationHandler.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/ADKerberosOperationHandler.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/ADKerberosOperationHandler.java index 48e04f4..32efa3e 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/ADKerberosOperationHandler.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/kerberos/ADKerberosOperationHandler.java @@ -149,6 +149,9 @@ public class ADKerberosOperationHandler extends KerberosOperationHandler { if (this.ldapUrl == null) { throw new KerberosKDCConnectionException("ldapUrl not provided"); } + if (!this.ldapUrl.startsWith("ldaps://")) { + throw new KerberosKDCConnectionException("ldapUrl is not valid ldaps URL"); + } this.principalContainerDn = kerberosConfiguration.get(KERBEROS_ENV_PRINCIPAL_CONTAINER_DN); if (this.principalContainerDn == null) { http://git-wip-us.apache.org/repos/asf/ambari/blob/5d7824ea/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/ADKerberosOperationHandlerTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/ADKerberosOperationHandlerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/ADKerberosOperationHandlerTest.java index 52cd372..a2304b8 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/ADKerberosOperationHandlerTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/ADKerberosOperationHandlerTest.java @@ -91,6 +91,20 @@ public class ADKerberosOperationHandlerTest extends KerberosOperationHandlerTest handler.close(); } + @Test(expected = KerberosKDCConnectionException.class) + public void testOpenExceptionNoLdaps() throws Exception { + PrincipalKeyCredential kc = new PrincipalKeyCredential(DEFAULT_ADMIN_PRINCIPAL, "hello"); + KerberosOperationHandler handler = new ADKerberosOperationHandler(); + Map<String, String> kerberosEnvMap = new HashMap<String, String>() { + { + put(ADKerberosOperationHandler.KERBEROS_ENV_LDAP_URL, "ldap://this_wont_work"); + put(ADKerberosOperationHandler.KERBEROS_ENV_PRINCIPAL_CONTAINER_DN, DEFAULT_PRINCIPAL_CONTAINER_DN); + } + }; + handler.open(kc, DEFAULT_REALM, kerberosEnvMap); + handler.close(); + } + @Test(expected = KerberosAdminAuthenticationException.class) public void testTestAdministratorCredentialsIncorrectAdminPassword() throws Exception { PrincipalKeyCredential kc = new PrincipalKeyCredential(DEFAULT_ADMIN_PRINCIPAL, "wrong");
