public LdapUserInfo authenticate()

in manager/general/src/main/java/org/apache/doris/stack/connector/LdapClient.java [123:163]


    public LdapUserInfo authenticate(LDAPConnection ldapConnection, LdapUserInfoReq ldapUserInfoReq) {

        LdapUserInfo ldapUserInfo = new LdapUserInfo();
        ldapUserInfo.setAuth(false);
        for (String baseDn : ldapUserInfoReq.getBaseDn()) {
            Filter userFilter = Filter.createEqualityFilter(ldapUserInfoReq.getUserAttribute(), ldapUserInfoReq.getUserValue());
            SearchRequest searchRequest = new SearchRequest(baseDn, SearchScope.SUB, userFilter);
            searchRequest.setSizeLimit(1);
            try {
                SearchResult searchResult = ldapConnection.search(searchRequest);

                // check
                if (searchResult.getEntryCount() > 1) {
                    log.error("We got more than one Entry for: {}", searchRequest.getFilter());
                }
                if (searchResult.getEntryCount() == 0 || searchResult.getSearchEntries().isEmpty()) {
                    log.error("We got No Entries for: {}", searchRequest.getFilter());
                    return ldapUserInfo;
                }

                SearchResultEntry entry = searchResult.getSearchEntries().get(0);
                BindRequest bindRequest = new SimpleBindRequest(entry.getDN(), ldapUserInfoReq.getPassword());
                ldapConnection.bind(bindRequest);

                ldapUserInfo.setDn(entry.getDN());
                ldapUserInfo.setFirstName(entry.getAttributeValue(FIRST_NAME));
                ldapUserInfo.setLastName(entry.getAttributeValue(LAST_NAME));
                ldapUserInfo.setEmail(entry.getAttributeValue(EMAIL));
                ldapUserInfo.setGroups(entry.getAttributeValue(GROUPS));
                ldapUserInfo.setAuth(true);
                return ldapUserInfo;
            } catch (LDAPSearchException e) {
                log.error("LDAP search user error: {}", e);
            } catch (LDAPException e) {
                log.error("LDAP authenticate failed error: {}", e);
            } catch (Exception e) {
                log.error("LDAP authenticate error: {}", e);
            }
        }
        return ldapUserInfo;
    }