diff --git a/dolphinscheduler-api/pom.xml b/dolphinscheduler-api/pom.xml index 75122e8df9..df58a777b9 100644 --- a/dolphinscheduler-api/pom.xml +++ b/dolphinscheduler-api/pom.xml @@ -280,6 +280,13 @@ net.sf.py4j py4j + + + org.springframework + spring-ldap + 1.1.2 + + diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/security/impl/ldap/LdapService.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/security/impl/ldap/LdapService.java index dd2123bd1c..15514a766f 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/security/impl/ldap/LdapService.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/security/impl/ldap/LdapService.java @@ -35,11 +35,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; +import org.springframework.ldap.support.filter.EqualsFilter; import org.springframework.stereotype.Component; @Component @Configuration public class LdapService { + private static final Logger logger = LoggerFactory.getLogger(LdapService.class); @Value("${security.authentication.ldap.user.admin:#{null}}") @@ -87,15 +89,14 @@ public class LdapService { SearchControls sc = new SearchControls(); sc.setReturningAttributes(new String[]{ldapEmailAttribute}); sc.setSearchScope(SearchControls.SUBTREE_SCOPE); - String searchFilter = String.format("(%s=%s)", ldapUserIdentifyingAttribute, userId); - //Search for the user you want to authenticate, search him with some attribute - NamingEnumeration results = ctx.search(ldapBaseDn, searchFilter, sc); + EqualsFilter filter = new EqualsFilter(ldapUserIdentifyingAttribute, userId); + NamingEnumeration results = ctx.search(ldapBaseDn, filter.toString(), sc); if (results.hasMore()) { // get the users DN (distinguishedName) from the result SearchResult result = results.next(); NamingEnumeration attrs = result.getAttributes().getAll(); while (attrs.hasMore()) { - //Open another connection to the LDAP server with the found DN and the password + // Open another connection to the LDAP server with the found DN and the password searchEnv.put(Context.SECURITY_PRINCIPAL, result.getNameInNamespace()); searchEnv.put(Context.SECURITY_CREDENTIALS, userPwd); try { diff --git a/tools/dependencies/known-dependencies.txt b/tools/dependencies/known-dependencies.txt index 1e35f78b75..8b5564d057 100755 --- a/tools/dependencies/known-dependencies.txt +++ b/tools/dependencies/known-dependencies.txt @@ -228,6 +228,7 @@ springfox-spring-web-2.9.2.jar springfox-swagger-common-2.9.2.jar springfox-swagger-ui-2.9.2.jar springfox-swagger2-2.9.2.jar +spring-ldap-1.1.2.jar swagger-annotations-1.5.20.jar swagger-bootstrap-ui-1.9.3.jar swagger-models-1.5.24.jar