【问题标题】:How to get All Group Users from Active Directory LDAP Server in Springboot?如何在 Spring Boot 中从 Active Directory LDAP 服务器获取所有组用户?
【发布时间】:2023-03-11 00:10:01
【问题描述】:

我正在尝试从 Active Directory LDAP 服务器检索所有组和相应的用户。

谁能帮忙提供示例代码?

【问题讨论】:

    标签: java spring-boot active-directory ldap


    【解决方案1】:
    package test;
    
    import java.util.List;
    
    import com.unboundid.ldap.sdk.LDAPConnection;
    import com.unboundid.ldap.sdk.LDAPException;
    import com.unboundid.ldap.sdk.LDAPSearchException;
    import com.unboundid.ldap.sdk.SearchRequest;
    import com.unboundid.ldap.sdk.SearchResult;
    import com.unboundid.ldap.sdk.SearchResultEntry;
    import com.unboundid.ldap.sdk.SearchScope;
    
    public class Test2 {
    
    
        public static void main(String[] args) {
    
            try {
                List<SearchResultEntry> usersFromLdap = getUsersFromLdap();
                System.out.println(usersFromLdap);
            } catch (LDAPException e) {
                //TODO handle exception
            }
    
        }
    
        public static List<SearchResultEntry> getUsersFromLdap() throws LDAPException, LDAPSearchException{
            String searchBaseDN = "dc=your-domain,dc=com"; //your-domain.com
            String searchFilter = "(&(objectClass=user)(sn=*))"; //see e.g. https://confluence.atlassian.com/kb/how-to-write-ldap-search-filters-792496933.html
    
    
            LDAPConnection connection = new LDAPConnection("host.your-domain.com", 389);
            try {
                connection.bind("yourLdapUser", "YourLdapPassword");
                SearchRequest request = new SearchRequest(searchBaseDN, SearchScope.SUB, searchFilter);
                request.setSizeLimit(0);
                SearchResult searchResult = connection.search(request);
    
                List<SearchResultEntry> result = searchResult.getSearchEntries();
                return result;
            } finally {
                if (connection != null) {
                    connection.close();
                }
            }
        }
    
    }
    

    【讨论】:

    • 我们没有任何用户凭据,因为我们使用的是活动目录。请帮我解决这个问题。谢谢@heiwil
    • 我们在 LDAP 中创建了一个用户,以便能够通过代码登录以获取用户信息。因此,您可以创建一个像 yourApplicationUser 这样的用户并使用此凭据登录。如果设置允许,您应该能够使用每个现有用户登录。
    • 所以它会给活动目录中所有组的所有用户?谢谢@@heiwil
    • 返回objectClass=user的所有条目。 searchFilter 可以单独设置。参见例如confluence.atlassian.com/kb/…
    • 尝试使用上述代码时,得到 java.lang.ClassNotFoundException: com.unboundid.ldap.sdk.LDAPException。请帮帮我谢谢。 @heiwil
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多