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;
}