@Override public Object loadUserBySAML(SAMLCredential samlCredential) throws UsernameNotFoundException { final String userEmail = samlCredential.getAttributeAsString("email"); logger.debug("samlCredential.email:" + userEmail); final String userName = userEmail.substring(0, userEmail.indexOf("@")); UserDetails userDetails = null; try { userDetails = ldapUserDetailsService.loadUserByUsername(userName); } catch (org.springframework.security.core.userdetails.UsernameNotFoundException e) { logger.error("User not found in LDAP, check whether he/she has been added to the groups.", e); } logger.debug("userDeail by search ldap with '" + userName + "' is: " + userDetails); return userDetails; } }
@Test public void nullPopulatorConstructorReturnsEmptyAuthoritiesList() throws Exception { DirContextAdapter userData = new DirContextAdapter(new DistinguishedName( "uid=joe")); LdapUserDetailsService service = new LdapUserDetailsService(new MockUserSearch( userData)); UserDetails user = service.loadUserByUsername("doesntmatterwegetjoeanyway"); assertThat(user.getAuthorities()).isEmpty(); }
@Test public void correctAuthoritiesAreReturned() { DirContextAdapter userData = new DirContextAdapter(new DistinguishedName( "uid=joe")); LdapUserDetailsService service = new LdapUserDetailsService(new MockUserSearch( userData), new MockAuthoritiesPopulator()); service.setUserDetailsMapper(new LdapUserDetailsMapper()); UserDetails user = service.loadUserByUsername("doesntmatterwegetjoeanyway"); Set<String> authorities = AuthorityUtils .authorityListToSet(user.getAuthorities()); assertThat(authorities).hasSize(1); assertThat(authorities.contains("ROLE_FROM_POPULATOR")).isTrue(); }
@Test(expected = IllegalArgumentException.class) public void rejectsNullSearchObject() { new LdapUserDetailsService(null, new NullLdapAuthoritiesPopulator()); }
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException { LdapUserDetailsService ldapUserDetailsService = new LdapUserDetailsService(ldapSearch, authoritiesPopulator); return ldapUserDetailsService.loadUserByUsername(username); } }
@Test(expected = IllegalArgumentException.class) public void rejectsNullAuthoritiesPopulator() { new LdapUserDetailsService(new MockUserSearch(), null); }