James Moger
2014-04-08 ef4c45a4b129e77f1755d82b1a72372277bd95c8
Warn on LDAP synchronization if the uid attribute is null/undefined
2 files modified
13 ■■■■■ changed files
releases.moxie 1 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/auth/LdapAuthProvider.java 12 ●●●●● patch | view | raw | blame | history
releases.moxie
@@ -16,6 +16,7 @@
    - Ensure the Lucene ticket index is updated on repository deletion.
    changes:
    - Specify the --dailyLogFile option for the Ubuntu and CentOS service scripts (issue-348)
    - Improve logging for missing LDAP uid attribute when synchronizing (issue-394)
    - The ticket close-on-push commit message regular expression is now configurable by a setting (issue-404)
    - Redirect to summary page on edit repository (issue-405)
    - Option to allow LDAP users to directly authenticate without performing LDAP searches (pr-162)
src/main/java/com/gitblit/auth/LdapAuthProvider.java
@@ -119,8 +119,12 @@
                        final Map<String, UserModel> ldapUsers = new HashMap<String, UserModel>();
                        for (SearchResultEntry loggingInUser : result.getSearchEntries()) {
                            final String username = loggingInUser.getAttribute(uidAttribute).getValue();
                            Attribute uid = loggingInUser.getAttribute(uidAttribute);
                            if (uid == null) {
                                logger.error("Can not synchronize with LDAP, missing \"{}\" attribute", uidAttribute);
                                continue;
                            }
                            final String username = uid.getValue();
                            logger.debug("LDAP synchronizing: " + username);
                            UserModel user = userManager.getUserModel(username);
@@ -295,13 +299,13 @@
        if (ldapConnection != null) {
            try {
                boolean alreadyAuthenticated = false;
                String bindPattern = settings.getString(Keys.realm.ldap.bindpattern, "");
                if (!StringUtils.isEmpty(bindPattern)) {
                    try {
                        String bindUser = StringUtils.replace(bindPattern, "${username}", escapeLDAPSearchFilter(simpleUsername));
                        ldapConnection.bind(bindUser, new String(password));
                        alreadyAuthenticated = true;
                    } catch (LDAPException e) {
                        return null;