spring-projects / spring-projects/spring-security

SEC-2754: ActiveDirectoryLdapAuthenticationProvider doesnt work on JBoss

Open
#2,981 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

in: ldap type: bug type: jira
Dominant language
Java
Stars
9.6k
Forks
6.3k
Avg merge
2d 11h
Merged PRs (30d)
52

Description

Oscar Sjöholm (Migrated from SEC-2754) said:

Providing the ActiveDirectoryLdapAuthenticationProvider with incorrect credentials causes internal server error when running on JBoss.

This is because ActiveDirectoryLdapAuthenticationProvider only considers top-level LdapExceptions, whereas JBoss seems to wrap exceptions thrown by InitialLdapContext into a top-level NamingException.

I believe that the solution is to resolve the root exception that prevented the InitialLdapContext from being initialized. Something like the following should do the trick.

 try {
            return contextFactory.createContext(env);
        } catch (NamingException e) {
            NamingException rootException = e;
            while(rootException.getRootCause() != null && rootException.getRootCause() instanceof NamingException) {
                rootException = (NamingException)rootException.getRootCause();
            }
            if ((rootException instanceof AuthenticationException) || (rootException instanceof OperationNotSupportedException)) {
                handleBindException(bindPrincipal, rootException);
                throw badCredentials(rootException);
            } else {
                throw LdapUtils.convertLdapException(rootException);
            }
        }

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating ActiveDirectoryLdapAuthenticationProvider and the InitialLdapContext creation path. Reproduce the incorrect-credentials case on JBoss, then verify that the wrapped exception is handled as a bad-credentials failure rather than an internal server error.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
authentication, security
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.