From b7a4fabeb0cfe3b6d3c9c9387854f936deb78a43 Mon Sep 17 00:00:00 2001 From: Andrey Litvitski Date: Wed, 1 Jul 2026 21:28:12 +0300 Subject: [PATCH] Use modern Spring LDAP APIs With the release of spring-ldap 4.1.0, the `LdapClient` API has been updated, so we should update our usage of it. Closes: gh-19407 Signed-off-by: Andrey Litvitski --- .../ActiveDirectoryLdapAuthenticationProvider.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/ldap/src/main/java/org/springframework/security/ldap/authentication/ad/ActiveDirectoryLdapAuthenticationProvider.java b/ldap/src/main/java/org/springframework/security/ldap/authentication/ad/ActiveDirectoryLdapAuthenticationProvider.java index 3054c62418e..3281420914d 100644 --- a/ldap/src/main/java/org/springframework/security/ldap/authentication/ad/ActiveDirectoryLdapAuthenticationProvider.java +++ b/ldap/src/main/java/org/springframework/security/ldap/authentication/ad/ActiveDirectoryLdapAuthenticationProvider.java @@ -305,8 +305,7 @@ private DirContextOperations searchForUser(DirContext context, String username) String bindPrincipal = createBindPrincipal(username); String searchRoot = (this.rootDn != null) ? this.rootDn : searchRootFromPrincipal(bindPrincipal); SingleContextSource contextSource = new SingleContextSource(context); - LdapClient ldapClient = LdapClient.builder() - .contextSource(contextSource) + LdapClient ldapClient = LdapClient.withContextSource(contextSource) .defaultSearchControls(() -> searchControls) .ignorePartialResultException(true) .build(); @@ -315,11 +314,10 @@ private DirContextOperations searchForUser(DirContext context, String username) .base(searchRoot) .searchScope(SearchScope.SUBTREE) .filter(this.searchFilter, bindPrincipal, username); - DirContextOperations result = ldapClient.search().query(query).toEntry(); - if (result == null) { - throw new IncorrectResultSizeDataAccessException(1, 0); - } - return result; + return ldapClient.search() + .query(query) + .optional() + .orElseThrow(() -> new IncorrectResultSizeDataAccessException(1, 0)); } catch (CommunicationException ex) { throw badLdapConnection(ex);