diff --git a/ntlm/src/main/java/org/springframework/security/ui/ntlm/ldap/authenticator/NtlmAwareLdapAuthenticator.java b/ntlm/src/main/java/org/springframework/security/ui/ntlm/ldap/authenticator/NtlmAwareLdapAuthenticator.java index affb43d54a..da5067a09f 100755 --- a/ntlm/src/main/java/org/springframework/security/ui/ntlm/ldap/authenticator/NtlmAwareLdapAuthenticator.java +++ b/ntlm/src/main/java/org/springframework/security/ui/ntlm/ldap/authenticator/NtlmAwareLdapAuthenticator.java @@ -3,19 +3,18 @@ */ package org.springframework.security.ui.ntlm.ldap.authenticator; -import org.springframework.security.Authentication; -import org.springframework.security.BadCredentialsException; -import org.springframework.security.ldap.SpringSecurityContextSource; -import org.springframework.security.ldap.SpringSecurityLdapTemplate; -import org.springframework.security.providers.ldap.authenticator.BindAuthenticator; -import org.springframework.security.ui.ntlm.NtlmUsernamePasswordAuthenticationToken; -import org.springframework.ldap.NameNotFoundException; -import org.springframework.ldap.core.DirContextOperations; +import java.util.Iterator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - -import java.util.Iterator; +import org.springframework.ldap.NameNotFoundException; +import org.springframework.ldap.core.DirContextOperations; +import org.springframework.ldap.core.support.BaseLdapPathContextSource; +import org.springframework.security.Authentication; +import org.springframework.security.BadCredentialsException; +import org.springframework.security.ldap.SpringSecurityLdapTemplate; +import org.springframework.security.providers.ldap.authenticator.BindAuthenticator; +import org.springframework.security.ui.ntlm.NtlmUsernamePasswordAuthenticationToken; /** * Loads the UserDetails if authentication was already performed by NTLM (indicated by the type of authentication @@ -32,38 +31,38 @@ public class NtlmAwareLdapAuthenticator extends BindAuthenticator { //~ Constructors =================================================================================================== - public NtlmAwareLdapAuthenticator(SpringSecurityContextSource contextSource) { - super(contextSource); - } + public NtlmAwareLdapAuthenticator(BaseLdapPathContextSource contextSource) { + super(contextSource); + } //~ Methods ======================================================================================================== /** * Loads the user context information without binding. - */ - protected DirContextOperations loadUser(String aUserDn, String aUserName) { - SpringSecurityLdapTemplate template = new SpringSecurityLdapTemplate(getContextSource()); + */ + protected DirContextOperations loadUser(String aUserDn, String aUserName) { + SpringSecurityLdapTemplate template = new SpringSecurityLdapTemplate(getContextSource()); - try { - DirContextOperations user = template.retrieveEntry(aUserDn, getUserAttributes()); + try { + DirContextOperations user = template.retrieveEntry(aUserDn, getUserAttributes()); - return user; - } catch (NameNotFoundException e) { - // This will be thrown if an invalid user name is used and the method may - // be called multiple times to try different names, so we trap the exception. - if (logger.isDebugEnabled()) { - logger.debug("Failed to load user " + aUserDn + ": " + e.getMessage(), e); - } - } - return null; - } + return user; + } catch (NameNotFoundException e) { + // This will be thrown if an invalid user name is used and the method may + // be called multiple times to try different names, so we trap the exception. + if (logger.isDebugEnabled()) { + logger.debug("Failed to load user " + aUserDn + ": " + e.getMessage(), e); + } + } + return null; + } - /** - * If the supplied Authentication object is of type NtlmUsernamePasswordAuthenticationToken, + /** + * If the supplied Authentication object is of type NtlmUsernamePasswordAuthenticationToken, * the information stored in the user's directory entry is loaded without attempting to authenticate them. * Otherwise the parent class is called to perform a bind operation to authenticate the user. - */ - public DirContextOperations authenticate(Authentication authentication) { + */ + public DirContextOperations authenticate(Authentication authentication) { if (!(authentication instanceof NtlmUsernamePasswordAuthenticationToken)) { // Not NTLM authenticated, so call the base class to authenticate the user. return super.authenticate(authentication); @@ -74,36 +73,36 @@ public class NtlmAwareLdapAuthenticator extends BindAuthenticator { } if (logger.isDebugEnabled()) { - logger.debug("authenticate(NtlmUsernamePasswordAuthenticationToken) - start"); //$NON-NLS-1$ - } + logger.debug("authenticate(NtlmUsernamePasswordAuthenticationToken) - start"); //$NON-NLS-1$ + } - final String userName = authentication.getName(); - DirContextOperations user = null; + final String userName = authentication.getName(); + DirContextOperations user = null; - // If DN patterns are configured, try authenticating with them directly - Iterator myDns = getUserDns(userName).iterator(); + // If DN patterns are configured, try authenticating with them directly + Iterator myDns = getUserDns(userName).iterator(); - // tries them all until we found something - while (myDns.hasNext() && (user == null)) { - user = loadUser((String) myDns.next(), userName); - } + // tries them all until we found something + while (myDns.hasNext() && (user == null)) { + user = loadUser((String) myDns.next(), userName); + } - // Otherwise use the configured locator to find the user - // and authenticate with the returned DN. - if ((user == null) && (getUserSearch() != null)) { - DirContextOperations userFromSearch = getUserSearch().searchForUser(userName); - // lancer l'identificvation - user = loadUser(userFromSearch.getDn().toString(), userName); - } + // Otherwise use the configured locator to find the user + // and authenticate with the returned DN. + if ((user == null) && (getUserSearch() != null)) { + DirContextOperations userFromSearch = getUserSearch().searchForUser(userName); + // lancer l'identificvation + user = loadUser(userFromSearch.getDn().toString(), userName); + } - // Failed to locate the user in the LDAP directory - if (user == null) { - throw new BadCredentialsException(messages.getMessage("BindAuthenticator.badCredentials", "Bad credentials")); - } + // Failed to locate the user in the LDAP directory + if (user == null) { + throw new BadCredentialsException(messages.getMessage("BindAuthenticator.badCredentials", "Bad credentials")); + } - if (logger.isDebugEnabled()) { - logger.debug("authenticate(NtlmUsernamePasswordAuthenticationToken) - end"); //$NON-NLS-1$ - } - return user; - } + if (logger.isDebugEnabled()) { + logger.debug("authenticate(NtlmUsernamePasswordAuthenticationToken) - end"); //$NON-NLS-1$ + } + return user; + } }