SEC-558: Combine user mapping implementations into a single interface and make more use of DirContextOperations in SS LDAP APIs.
This commit is contained in:
@@ -22,6 +22,7 @@ import org.acegisecurity.userdetails.UsernameNotFoundException;
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetails;
|
||||
|
||||
import org.springframework.dao.IncorrectResultSizeDataAccessException;
|
||||
import org.springframework.ldap.core.DirContextOperations;
|
||||
|
||||
|
||||
/**
|
||||
@@ -48,8 +49,8 @@ public class FilterBasedLdapUserSearchTests extends AbstractLdapIntegrationTests
|
||||
locator.setSearchTimeLimit(0);
|
||||
locator.setDerefLinkFlag(false);
|
||||
|
||||
LdapUserDetails bob = locator.searchForUser("bob");
|
||||
assertEquals("bob", bob.getUsername());
|
||||
DirContextOperations bob = locator.searchForUser("bob");
|
||||
assertEquals("bob", bob.getStringAttribute("uid"));
|
||||
|
||||
// name is wrong with embedded apacheDS
|
||||
// assertEquals("uid=bob,ou=people,dc=acegisecurity,dc=org", bob.getDn());
|
||||
@@ -61,9 +62,8 @@ public class FilterBasedLdapUserSearchTests extends AbstractLdapIntegrationTests
|
||||
"(&(cn=*)(!(|(uid={0})(uid=marissa))))", dirCtxFactory);
|
||||
|
||||
// Search for bob, get back ben...
|
||||
LdapUserDetails ben = locator.searchForUser("bob");
|
||||
String cn = (String) ben.getAttributes().get("cn").get();
|
||||
assertEquals("Ben Alex", cn);
|
||||
DirContextOperations ben = locator.searchForUser("bob");
|
||||
assertEquals("Ben Alex", ben.getStringAttribute("cn"));
|
||||
|
||||
// assertEquals("uid=ben,ou=people,"+ROOT_DN, ben.getDn());
|
||||
}
|
||||
@@ -91,8 +91,8 @@ public class FilterBasedLdapUserSearchTests extends AbstractLdapIntegrationTests
|
||||
FilterBasedLdapUserSearch locator = new FilterBasedLdapUserSearch("", "(cn={0})", dirCtxFactory);
|
||||
locator.setSearchSubtree(true);
|
||||
|
||||
LdapUserDetails ben = locator.searchForUser("Ben Alex");
|
||||
assertEquals("ben", ben.getUsername());
|
||||
DirContextOperations ben = locator.searchForUser("Ben Alex");
|
||||
assertEquals("ben", ben.getStringAttribute("uid"));
|
||||
|
||||
// assertEquals("uid=ben,ou=people,dc=acegisecurity,dc=org", ben.getDn());
|
||||
}
|
||||
|
||||
@@ -24,8 +24,11 @@ import org.acegisecurity.GrantedAuthorityImpl;
|
||||
import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
|
||||
|
||||
import org.acegisecurity.userdetails.UserDetails;
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetails;
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetailsImpl;
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetailsMapper;
|
||||
import org.springframework.ldap.core.DirContextOperations;
|
||||
import org.springframework.ldap.core.DirContextAdapter;
|
||||
import org.springframework.ldap.core.DistinguishedName;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -54,14 +57,14 @@ public class LdapAuthenticationProviderTests extends TestCase {
|
||||
public void testDifferentCacheValueCausesException() {
|
||||
LdapAuthenticationProvider ldapProvider = new LdapAuthenticationProvider(new MockAuthenticator(),
|
||||
new MockAuthoritiesPopulator());
|
||||
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken("bob", "bobspassword");
|
||||
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken("ben", "benspassword");
|
||||
|
||||
// User is authenticated here
|
||||
UserDetails user = ldapProvider.retrieveUser("bob", authRequest);
|
||||
UserDetails user = ldapProvider.retrieveUser("ben", authRequest);
|
||||
// Assume the user details object is cached...
|
||||
|
||||
// And a subsequent authentication request comes in on the cached data
|
||||
authRequest = new UsernamePasswordAuthenticationToken("bob", "wrongpassword");
|
||||
authRequest = new UsernamePasswordAuthenticationToken("ben", "wrongpassword");
|
||||
|
||||
try {
|
||||
ldapProvider.additionalAuthenticationChecks(user, authRequest);
|
||||
@@ -95,14 +98,17 @@ public class LdapAuthenticationProviderTests extends TestCase {
|
||||
public void testNormalUsage() {
|
||||
LdapAuthenticationProvider ldapProvider = new LdapAuthenticationProvider(new MockAuthenticator(),
|
||||
new MockAuthoritiesPopulator());
|
||||
LdapUserDetailsMapper userMapper = new LdapUserDetailsMapper();
|
||||
userMapper.setRoleAttributes(new String[] {"ou"});
|
||||
ldapProvider.setUserDetailsContextMapper(userMapper);
|
||||
|
||||
assertNotNull(ldapProvider.getAuthoritiesPopulator());
|
||||
|
||||
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken("bob", "bobspassword");
|
||||
UserDetails user = ldapProvider.retrieveUser("bob", authRequest);
|
||||
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken("ben", "benspassword");
|
||||
UserDetails user = ldapProvider.retrieveUser("ben", authRequest);
|
||||
assertEquals(2, user.getAuthorities().length);
|
||||
assertEquals("bobspassword", user.getPassword());
|
||||
assertEquals("bob", user.getUsername());
|
||||
assertEquals("{SHA}nFCebWjxfaLbHHG1Qk5UU4trbvQ=", user.getPassword());
|
||||
assertEquals("ben", user.getUsername());
|
||||
|
||||
ArrayList authorities = new ArrayList();
|
||||
authorities.add(user.getAuthorities()[0].getAuthority());
|
||||
@@ -116,8 +122,11 @@ public class LdapAuthenticationProviderTests extends TestCase {
|
||||
|
||||
public void testUseWithNullAuthoritiesPopulatorReturnsCorrectRole() {
|
||||
LdapAuthenticationProvider ldapProvider = new LdapAuthenticationProvider(new MockAuthenticator());
|
||||
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken("bob", "bobspassword");
|
||||
UserDetails user = ldapProvider.retrieveUser("bob", authRequest);
|
||||
LdapUserDetailsMapper userMapper = new LdapUserDetailsMapper();
|
||||
userMapper.setRoleAttributes(new String[] {"ou"});
|
||||
ldapProvider.setUserDetailsContextMapper(userMapper);
|
||||
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken("ben", "benspassword");
|
||||
UserDetails user = ldapProvider.retrieveUser("ben", authRequest);
|
||||
assertEquals(1, user.getAuthorities().length);
|
||||
assertEquals("ROLE_FROM_ENTRY", user.getAuthorities()[0].getAuthority());
|
||||
}
|
||||
@@ -125,23 +134,20 @@ public class LdapAuthenticationProviderTests extends TestCase {
|
||||
//~ Inner Classes ==================================================================================================
|
||||
|
||||
class MockAuthenticator implements LdapAuthenticator {
|
||||
Attributes userAttributes = new BasicAttributes("cn", "bob");
|
||||
|
||||
public LdapUserDetails authenticate(String username, String password) {
|
||||
LdapUserDetailsImpl.Essence userEssence = new LdapUserDetailsImpl.Essence();
|
||||
userEssence.setPassword("{SHA}anencodedpassword");
|
||||
userEssence.setAttributes(userAttributes);
|
||||
public DirContextOperations authenticate(String username, String password) {
|
||||
DirContextAdapter ctx = new DirContextAdapter();
|
||||
ctx.setAttributeValue("ou", "FROM_ENTRY");
|
||||
|
||||
if (username.equals("bob") && password.equals("bobspassword")) {
|
||||
userEssence.setDn("cn=bob,ou=people,dc=acegisecurity,dc=org");
|
||||
userEssence.addAuthority(new GrantedAuthorityImpl("ROLE_FROM_ENTRY"));
|
||||
if (username.equals("ben") && password.equals("benspassword")) {
|
||||
ctx.setDn(new DistinguishedName("cn=ben,ou=people,dc=acegisecurity,dc=org"));
|
||||
ctx.setAttributeValue("userPassword","{SHA}nFCebWjxfaLbHHG1Qk5UU4trbvQ=");
|
||||
|
||||
return userEssence.createUserDetails();
|
||||
return ctx;
|
||||
} else if (username.equals("jen") && password.equals("")) {
|
||||
userEssence.setDn("cn=jen,ou=people,dc=acegisecurity,dc=org");
|
||||
userEssence.addAuthority(new GrantedAuthorityImpl("ROLE_FROM_ENTRY"));
|
||||
ctx.setDn(new DistinguishedName("cn=jen,ou=people,dc=acegisecurity,dc=org"));
|
||||
|
||||
return userEssence.createUserDetails();
|
||||
return ctx;
|
||||
}
|
||||
|
||||
throw new BadCredentialsException("Authentication failed.");
|
||||
@@ -169,7 +175,7 @@ public class LdapAuthenticationProviderTests extends TestCase {
|
||||
// assertEquals(2, auth.getAuthorities().length);
|
||||
// }
|
||||
class MockAuthoritiesPopulator implements LdapAuthoritiesPopulator {
|
||||
public GrantedAuthority[] getGrantedAuthorities(LdapUserDetails userDetailsll) {
|
||||
public GrantedAuthority[] getGrantedAuthorities(DirContextOperations userCtx, String username) {
|
||||
return new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_FROM_POPULATOR")};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,14 +17,13 @@ package org.acegisecurity.providers.ldap.authenticator;
|
||||
|
||||
import org.acegisecurity.AcegiMessageSource;
|
||||
import org.acegisecurity.BadCredentialsException;
|
||||
import org.acegisecurity.GrantedAuthorityImpl;
|
||||
|
||||
import org.acegisecurity.ldap.AbstractLdapIntegrationTests;
|
||||
import org.acegisecurity.ldap.InitialDirContextFactory;
|
||||
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetails;
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetailsImpl;
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetailsMapper;
|
||||
import org.springframework.ldap.core.DirContextAdapter;
|
||||
import org.springframework.ldap.core.DistinguishedName;
|
||||
import org.springframework.ldap.core.DirContextOperations;
|
||||
|
||||
|
||||
/**
|
||||
@@ -48,8 +47,8 @@ public class BindAuthenticatorTests extends AbstractLdapIntegrationTests {
|
||||
public void testAuthenticationWithCorrectPasswordSucceeds() {
|
||||
authenticator.setUserDnPatterns(new String[] {"uid={0},ou=people"});
|
||||
|
||||
LdapUserDetails user = authenticator.authenticate("bob", "bobspassword");
|
||||
assertEquals("bob", user.getUsername());
|
||||
DirContextOperations user = authenticator.authenticate("bob", "bobspassword");
|
||||
assertEquals("bob", user.getStringAttribute("uid"));
|
||||
}
|
||||
|
||||
public void testAuthenticationWithInvalidUserNameFails() {
|
||||
@@ -62,10 +61,9 @@ public class BindAuthenticatorTests extends AbstractLdapIntegrationTests {
|
||||
}
|
||||
|
||||
public void testAuthenticationWithUserSearch() throws Exception {
|
||||
LdapUserDetailsImpl.Essence userEssence = new LdapUserDetailsImpl.Essence();
|
||||
userEssence.setDn("uid=bob,ou=people,dc=acegisecurity,dc=org");
|
||||
DirContextAdapter ctx = new DirContextAdapter(new DistinguishedName("uid=bob,ou=people,dc=acegisecurity,dc=org"));
|
||||
|
||||
authenticator.setUserSearch(new MockUserSearch(userEssence.createUserDetails()));
|
||||
authenticator.setUserSearch(new MockUserSearch(ctx));
|
||||
authenticator.afterPropertiesSet();
|
||||
authenticator.authenticate("bob", "bobspassword");
|
||||
}
|
||||
@@ -79,21 +77,6 @@ public class BindAuthenticatorTests extends AbstractLdapIntegrationTests {
|
||||
} catch (BadCredentialsException expected) {}
|
||||
}
|
||||
|
||||
// TODO: Create separate tests for base class
|
||||
public void testRoleRetrieval() {
|
||||
authenticator.setUserDnPatterns(new String[] {"uid={0},ou=people"});
|
||||
|
||||
LdapUserDetailsMapper userMapper = new LdapUserDetailsMapper();
|
||||
userMapper.setRoleAttributes(new String[] {"uid"});
|
||||
|
||||
authenticator.setUserDetailsMapper(userMapper);
|
||||
|
||||
LdapUserDetails user = authenticator.authenticate("bob", "bobspassword");
|
||||
|
||||
assertEquals(1, user.getAuthorities().length);
|
||||
assertEquals(new GrantedAuthorityImpl("ROLE_BOB"), user.getAuthorities()[0]);
|
||||
}
|
||||
|
||||
public void testUserDnPatternReturnsCorrectDn() {
|
||||
authenticator.setUserDnPatterns(new String[] {"cn={0},ou=people"});
|
||||
assertEquals("cn=Joe,ou=people," + ((InitialDirContextFactory)getContextSource()).getRootDn(), authenticator.getUserDns("Joe").get(0));
|
||||
|
||||
@@ -18,11 +18,11 @@ package org.acegisecurity.providers.ldap.authenticator;
|
||||
import org.acegisecurity.ldap.LdapUserSearch;
|
||||
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetails;
|
||||
import org.springframework.ldap.core.DirContextOperations;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
DOCUMENT ME!
|
||||
*
|
||||
*
|
||||
* @author Luke Taylor
|
||||
* @version $Id$
|
||||
@@ -30,17 +30,17 @@ DOCUMENT ME!
|
||||
public class MockUserSearch implements LdapUserSearch {
|
||||
//~ Instance fields ================================================================================================
|
||||
|
||||
LdapUserDetails user;
|
||||
DirContextOperations user;
|
||||
|
||||
//~ Constructors ===================================================================================================
|
||||
|
||||
public MockUserSearch(LdapUserDetails user) {
|
||||
public MockUserSearch(DirContextOperations user) {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
//~ Methods ========================================================================================================
|
||||
|
||||
public LdapUserDetails searchForUser(String username) {
|
||||
public DirContextOperations searchForUser(String username) {
|
||||
return user;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ import org.acegisecurity.ldap.InitialDirContextFactory;
|
||||
import org.acegisecurity.providers.encoding.PlaintextPasswordEncoder;
|
||||
|
||||
import org.acegisecurity.userdetails.UsernameNotFoundException;
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetails;
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetailsImpl;
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetailsMapper;
|
||||
import org.springframework.ldap.core.DirContextAdapter;
|
||||
import org.springframework.ldap.core.DistinguishedName;
|
||||
import org.springframework.ldap.core.DirContextOperations;
|
||||
|
||||
|
||||
/**
|
||||
@@ -52,14 +52,13 @@ public class PasswordComparisonAuthenticatorTests extends AbstractLdapIntegratio
|
||||
// com.sun.jndi.ldap.LdapPoolManager.showStats(System.out);
|
||||
}
|
||||
|
||||
public void testAllAttributesAreRetrivedByDefault() {
|
||||
LdapUserDetails user = authenticator.authenticate("bob", "bobspassword");
|
||||
public void testAllAttributesAreRetrievedByDefault() {
|
||||
DirContextAdapter user = (DirContextAdapter) authenticator.authenticate("bob", "bobspassword");
|
||||
//System.out.println(user.getAttributes().toString());
|
||||
assertEquals("User should have 5 attributes", 5, user.getAttributes().size());
|
||||
}
|
||||
|
||||
public void testFailedSearchGivesUserNotFoundException()
|
||||
throws Exception {
|
||||
public void testFailedSearchGivesUserNotFoundException() throws Exception {
|
||||
authenticator = new PasswordComparisonAuthenticator((InitialDirContextFactory) getContextSource());
|
||||
assertTrue("User DN matches shouldn't be available", authenticator.getUserDns("Bob").isEmpty());
|
||||
authenticator.setUserSearch(new MockUserSearch(null));
|
||||
@@ -95,10 +94,11 @@ public class PasswordComparisonAuthenticatorTests extends AbstractLdapIntegratio
|
||||
}
|
||||
|
||||
public void testLocalPasswordComparisonSucceedsWithCorrectPassword() {
|
||||
LdapUserDetails user = authenticator.authenticate("bob", "bobspassword");
|
||||
DirContextOperations user = authenticator.authenticate("bob", "bobspassword");
|
||||
// check username is retrieved.
|
||||
assertEquals("bob", user.getUsername());
|
||||
assertEquals("bobspassword", user.getPassword());
|
||||
assertEquals("bob", user.getStringAttribute("uid"));
|
||||
String password = new String((byte[])user.getObjectAttribute("userPassword"));
|
||||
assertEquals("bobspassword", password);
|
||||
}
|
||||
|
||||
public void testMultipleDnPatternsWorkOk() {
|
||||
@@ -110,7 +110,7 @@ public class PasswordComparisonAuthenticatorTests extends AbstractLdapIntegratio
|
||||
authenticator.setUserAttributes(new String[] {"uid", "userPassword"});
|
||||
authenticator.setPasswordEncoder(new PlaintextPasswordEncoder());
|
||||
|
||||
LdapUserDetails user = authenticator.authenticate("Bob", "bobspassword");
|
||||
DirContextAdapter user = (DirContextAdapter) authenticator.authenticate("Bob", "bobspassword");
|
||||
assertEquals("Should have retrieved 2 attribute (uid, userPassword)", 2, user.getAttributes().size());
|
||||
}
|
||||
|
||||
@@ -136,12 +136,8 @@ public class PasswordComparisonAuthenticatorTests extends AbstractLdapIntegratio
|
||||
}
|
||||
|
||||
public void testUseOfDifferentPasswordAttribute() {
|
||||
LdapUserDetailsMapper mapper = new LdapUserDetailsMapper();
|
||||
mapper.setPasswordAttributeName("uid");
|
||||
authenticator.setPasswordAttributeName("uid");
|
||||
authenticator.setUserDetailsMapper(mapper);
|
||||
|
||||
LdapUserDetails bob = authenticator.authenticate("bob", "bob");
|
||||
authenticator.authenticate("bob", "bob");
|
||||
}
|
||||
|
||||
public void testLdapCompareWithDifferentPasswordAttributeSucceeds() {
|
||||
@@ -155,11 +151,10 @@ public class PasswordComparisonAuthenticatorTests extends AbstractLdapIntegratio
|
||||
authenticator = new PasswordComparisonAuthenticator((InitialDirContextFactory) getContextSource());
|
||||
assertTrue("User DN matches shouldn't be available", authenticator.getUserDns("Bob").isEmpty());
|
||||
|
||||
LdapUserDetailsImpl.Essence userEssence = new LdapUserDetailsImpl.Essence();
|
||||
userEssence.setDn("uid=Bob,ou=people,dc=acegisecurity,dc=org");
|
||||
userEssence.setPassword("bobspassword");
|
||||
DirContextAdapter ctx = new DirContextAdapter(new DistinguishedName("uid=Bob,ou=people,dc=acegisecurity,dc=org"));
|
||||
ctx.setAttributeValue("userPassword", "bobspassword");
|
||||
|
||||
authenticator.setUserSearch(new MockUserSearch(userEssence.createUserDetails()));
|
||||
authenticator.setUserSearch(new MockUserSearch(ctx));
|
||||
authenticator.authenticate("ShouldntBeUsed", "bobspassword");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ import org.acegisecurity.ldap.AbstractLdapIntegrationTests;
|
||||
import org.acegisecurity.ldap.InitialDirContextFactory;
|
||||
|
||||
import org.acegisecurity.userdetails.ldap.LdapUserDetailsImpl;
|
||||
import org.springframework.ldap.core.DirContextAdapter;
|
||||
import org.springframework.ldap.core.DistinguishedName;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@@ -45,39 +47,13 @@ public class DefaultLdapAuthoritiesPopulatorTests extends AbstractLdapIntegratio
|
||||
|
||||
}
|
||||
|
||||
// public void testUserAttributeMappingToRoles() {
|
||||
// DefaultLdapAuthoritiesPopulator populator = new DefaultLdapAuthoritiesPopulator();
|
||||
// populator.setUserRoleAttributes(new String[] {"userRole", "otherUserRole"});
|
||||
// populator.getUserRoleAttributes();
|
||||
//
|
||||
// Attributes userAttrs = new BasicAttributes();
|
||||
// BasicAttribute attr = new BasicAttribute("userRole", "role1");
|
||||
// attr.add("role2");
|
||||
// userAttrs.put(attr);
|
||||
// attr = new BasicAttribute("otherUserRole", "role3");
|
||||
// attr.add("role2"); // duplicate
|
||||
// userAttrs.put(attr);
|
||||
//
|
||||
// LdapUserDetailsImpl.Essence user = new LdapUserDetailsImpl.Essence();
|
||||
// user.setDn("Ignored");
|
||||
// user.setUsername("Ignored");
|
||||
// user.setAttributes(userAttrs);
|
||||
//
|
||||
// GrantedAuthority[] authorities =
|
||||
// populator.getGrantedAuthorities(user.createUserDetails());
|
||||
// assertEquals("User should have three roles", 3, authorities.length);
|
||||
|
||||
// }
|
||||
public void testDefaultRoleIsAssignedWhenSet() {
|
||||
|
||||
populator.setDefaultRole("ROLE_USER");
|
||||
|
||||
LdapUserDetailsImpl.Essence user = new LdapUserDetailsImpl.Essence();
|
||||
user.setDn("cn=notfound");
|
||||
user.setUsername("notfound");
|
||||
user.setAttributes(new BasicAttributes());
|
||||
DirContextAdapter ctx = new DirContextAdapter(new DistinguishedName("cn=notfound"));
|
||||
|
||||
GrantedAuthority[] authorities = populator.getGrantedAuthorities(user.createUserDetails());
|
||||
GrantedAuthority[] authorities = populator.getGrantedAuthorities(ctx, "notfound");
|
||||
assertEquals(1, authorities.length);
|
||||
assertEquals("ROLE_USER", authorities[0].getAuthority());
|
||||
}
|
||||
@@ -90,12 +66,9 @@ public class DefaultLdapAuthoritiesPopulatorTests extends AbstractLdapIntegratio
|
||||
populator.setConvertToUpperCase(true);
|
||||
populator.setGroupSearchFilter("(member={0})");
|
||||
|
||||
LdapUserDetailsImpl.Essence user = new LdapUserDetailsImpl.Essence();
|
||||
user.setUsername("ben");
|
||||
user.setDn("uid=ben,ou=people,dc=acegisecurity,dc=org");
|
||||
user.setAttributes(new BasicAttributes());
|
||||
DirContextAdapter ctx = new DirContextAdapter(new DistinguishedName("uid=ben,ou=people,dc=acegisecurity,dc=org"));
|
||||
|
||||
GrantedAuthority[] authorities = populator.getGrantedAuthorities(user.createUserDetails());
|
||||
GrantedAuthority[] authorities = populator.getGrantedAuthorities(ctx, "ben");
|
||||
|
||||
assertEquals("Should have 2 roles", 2, authorities.length);
|
||||
|
||||
@@ -111,11 +84,10 @@ public class DefaultLdapAuthoritiesPopulatorTests extends AbstractLdapIntegratio
|
||||
populator.setConvertToUpperCase(true);
|
||||
populator.setGroupSearchFilter("(ou={1})");
|
||||
|
||||
LdapUserDetailsImpl.Essence user = new LdapUserDetailsImpl.Essence();
|
||||
user.setUsername("manager");
|
||||
user.setDn("uid=ben,ou=people,dc=acegisecurity,dc=org");
|
||||
DirContextAdapter ctx = new DirContextAdapter(new DistinguishedName("uid=ben,ou=people,dc=acegisecurity,dc=org"));
|
||||
|
||||
GrantedAuthority[] authorities = populator.getGrantedAuthorities(ctx, "manager");
|
||||
|
||||
GrantedAuthority[] authorities = populator.getGrantedAuthorities(user.createUserDetails());
|
||||
assertEquals("Should have 1 role", 1, authorities.length);
|
||||
assertEquals("ROLE_MANAGER", authorities[0].getAuthority());
|
||||
}
|
||||
@@ -124,11 +96,10 @@ public class DefaultLdapAuthoritiesPopulatorTests extends AbstractLdapIntegratio
|
||||
populator.setGroupRoleAttribute("ou");
|
||||
populator.setConvertToUpperCase(true);
|
||||
|
||||
LdapUserDetailsImpl.Essence user = new LdapUserDetailsImpl.Essence();
|
||||
user.setUsername("manager");
|
||||
user.setDn("uid=ben,ou=people,dc=acegisecurity,dc=org");
|
||||
DirContextAdapter ctx = new DirContextAdapter(new DistinguishedName("uid=ben,ou=people,dc=acegisecurity,dc=org"));
|
||||
|
||||
GrantedAuthority[] authorities = populator.getGrantedAuthorities(ctx, "manager");
|
||||
|
||||
GrantedAuthority[] authorities = populator.getGrantedAuthorities(user.createUserDetails());
|
||||
assertEquals("Should have 2 roles", 2, authorities.length);
|
||||
Set roles = new HashSet(2);
|
||||
roles.add(authorities[0].getAuthority());
|
||||
@@ -142,11 +113,10 @@ public class DefaultLdapAuthoritiesPopulatorTests extends AbstractLdapIntegratio
|
||||
populator.setConvertToUpperCase(true);
|
||||
populator.setSearchSubtree(true);
|
||||
|
||||
LdapUserDetailsImpl.Essence user = new LdapUserDetailsImpl.Essence();
|
||||
user.setUsername("manager");
|
||||
user.setDn("uid=ben,ou=people,dc=acegisecurity,dc=org");
|
||||
DirContextAdapter ctx = new DirContextAdapter(new DistinguishedName("uid=ben,ou=people,dc=acegisecurity,dc=org"));
|
||||
|
||||
GrantedAuthority[] authorities = populator.getGrantedAuthorities(ctx, "manager");
|
||||
|
||||
GrantedAuthority[] authorities = populator.getGrantedAuthorities(user.createUserDetails());
|
||||
assertEquals("Should have 3 roles", 3, authorities.length);
|
||||
Set roles = new HashSet(3);
|
||||
roles.add(authorities[0].getAuthority());
|
||||
|
||||
@@ -22,6 +22,7 @@ import javax.naming.directory.BasicAttribute;
|
||||
|
||||
import org.springframework.ldap.core.DirContextAdapter;
|
||||
import org.springframework.ldap.core.DistinguishedName;
|
||||
import org.acegisecurity.GrantedAuthority;
|
||||
|
||||
/**
|
||||
* Tests {@link LdapUserDetailsMapper}.
|
||||
@@ -44,7 +45,7 @@ public class LdapUserDetailsMapperTests extends TestCase {
|
||||
ctx.setAttributeValues("userRole", new String[] {"X", "Y", "Z"});
|
||||
ctx.setAttributeValue("uid", "ani");
|
||||
|
||||
LdapUserDetailsImpl user = (LdapUserDetailsImpl) mapper.mapFromContext(ctx);
|
||||
LdapUserDetailsImpl user = (LdapUserDetailsImpl) mapper.mapUserFromContext(ctx, "ani", new GrantedAuthority[0]);
|
||||
|
||||
assertEquals(3, user.getAuthorities().length);
|
||||
}
|
||||
@@ -63,7 +64,7 @@ public class LdapUserDetailsMapperTests extends TestCase {
|
||||
DirContextAdapter ctx = new DirContextAdapter(attrs, new DistinguishedName("cn=someName"));
|
||||
ctx.setAttributeValue("uid", "ani");
|
||||
|
||||
LdapUserDetailsImpl user = (LdapUserDetailsImpl) mapper.mapFromContext(ctx);
|
||||
LdapUserDetailsImpl user = (LdapUserDetailsImpl) mapper.mapUserFromContext(ctx, "ani", new GrantedAuthority[0]);
|
||||
|
||||
assertEquals(1, user.getAuthorities().length);
|
||||
assertEquals("ROLE_X", user.getAuthorities()[0].getAuthority());
|
||||
@@ -94,7 +95,7 @@ public class LdapUserDetailsMapperTests extends TestCase {
|
||||
DirContextAdapter ctx = new DirContextAdapter(attrs, new DistinguishedName("cn=someName"));
|
||||
ctx.setAttributeValue("uid", "ani");
|
||||
|
||||
LdapUserDetails user = (LdapUserDetailsImpl) mapper.mapFromContext(ctx);
|
||||
LdapUserDetails user = (LdapUserDetailsImpl) mapper.mapUserFromContext(ctx, "ani", new GrantedAuthority[0]);
|
||||
|
||||
assertEquals("mypassword", user.getPassword());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user