|
|
|
@ -17,7 +17,7 @@ package org.springframework.security.ldap.authentication; |
|
|
|
|
|
|
|
|
|
|
|
import static org.junit.Assert.*; |
|
|
|
import static org.junit.Assert.*; |
|
|
|
|
|
|
|
|
|
|
|
import org.junit.Test; |
|
|
|
import org.junit.*; |
|
|
|
import org.springframework.ldap.core.DirContextOperations; |
|
|
|
import org.springframework.ldap.core.DirContextOperations; |
|
|
|
import org.springframework.security.authentication.BadCredentialsException; |
|
|
|
import org.springframework.security.authentication.BadCredentialsException; |
|
|
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; |
|
|
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; |
|
|
|
@ -80,8 +80,34 @@ public class BindAuthenticatorTests extends AbstractLdapIntegrationTests { |
|
|
|
authenticator.setUserSearch(new FilterBasedLdapUserSearch("ou=people", "(cn={0})", getContextSource())); |
|
|
|
authenticator.setUserSearch(new FilterBasedLdapUserSearch("ou=people", "(cn={0})", getContextSource())); |
|
|
|
authenticator.authenticate(new UsernamePasswordAuthenticationToken("mouse, jerry", "jerryspassword")); |
|
|
|
authenticator.authenticate(new UsernamePasswordAuthenticationToken("mouse, jerry", "jerryspassword")); |
|
|
|
authenticator.authenticate(new UsernamePasswordAuthenticationToken("slash/guy", "slashguyspassword")); |
|
|
|
authenticator.authenticate(new UsernamePasswordAuthenticationToken("slash/guy", "slashguyspassword")); |
|
|
|
|
|
|
|
// SEC-1661
|
|
|
|
|
|
|
|
authenticator.setUserSearch(new FilterBasedLdapUserSearch("ou=\\\"quoted people\\\"", "(cn={0})", getContextSource())); |
|
|
|
|
|
|
|
authenticator.authenticate(new UsernamePasswordAuthenticationToken("quoteguy", "quoteguyspassword")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void messingWithEscapedChars() throws Exception { |
|
|
|
|
|
|
|
Hashtable<String,String> env = new Hashtable<String,String>(); |
|
|
|
|
|
|
|
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); |
|
|
|
|
|
|
|
env.put(Context.PROVIDER_URL, "ldap://127.0.0.1:22389/dc=springsource,dc=com"); |
|
|
|
|
|
|
|
env.put(Context.SECURITY_AUTHENTICATION, "simple"); |
|
|
|
|
|
|
|
env.put(Context.SECURITY_PRINCIPAL, "cn=admin,dc=springsource,dc=com"); |
|
|
|
|
|
|
|
env.put(Context.SECURITY_CREDENTIALS, "password"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InitialDirContext idc = new InitialDirContext(env); |
|
|
|
|
|
|
|
SearchControls searchControls = new SearchControls(); |
|
|
|
|
|
|
|
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); |
|
|
|
|
|
|
|
DistinguishedName baseDn = new DistinguishedName("ou=\\\"quoted people\\\""); |
|
|
|
|
|
|
|
NamingEnumeration<SearchResult> matches = idc.search(baseDn, "(cn=*)", new Object[] {"quoteguy"}, searchControls); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while(matches.hasMore()) { |
|
|
|
|
|
|
|
SearchResult match = matches.next(); |
|
|
|
|
|
|
|
DistinguishedName dn = new DistinguishedName(match.getName()); |
|
|
|
|
|
|
|
System.out.println("**** Match: " + match.getName() + " ***** " + dn); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
*/ |
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void testAuthenticationWithWrongPasswordFails() { |
|
|
|
public void testAuthenticationWithWrongPasswordFails() { |
|
|
|
authenticator.setUserDnPatterns(new String[] {"uid={0},ou=people"}); |
|
|
|
authenticator.setUserDnPatterns(new String[] {"uid={0},ou=people"}); |
|
|
|
|