/**
* contextSource
* @return
*/
@Bean
public LdapContextSource contextSource() {
LdapContextSource contextSource = new LdapContextSource();
contextSource.setUrl(properties.getProperty("ldap.url"));
contextSource.setBase(properties.getProperty("ldap.base.dn"));
contextSource.setUserDn(properties.getProperty("ldap.principal"));
contextSource.setPassword(properties.getProperty("ldap.password"));
contextSource.setReferral("ignore");
return contextSource;
}
/**
* Create Ldap Templelate Instance
* @return
*/
@Bean
public LdapTemplate ldapTemplate() {
LdapTemplate ldapTemplate = new LdapTemplate();
try {
ldapTemplate = new LdapTemplate(contextSource());
} catch (Exception e) {
log.error("error while creating LDap Template", e);
}
return ldapTemplate;
}
/**
* this Method check if the username and password are valid
* then return either true if exists and false if not
* @param username
* @param password
* @return
*/
public Boolean authenticateUser(final String username, final String password) {
boolean auth = false;
LdapTemplate ldapTemplate = new LdapTemplate(contextSource());
try {
ldapTemplate.setIgnorePartialResultException(true);
log.info("ldapTemplate-->" + ldapTemplate);
final AndFilter filter = new AndFilter().and(new EqualsFilter("objectclass", OBJECT_CLASS)).and(new EqualsFilter(NETWORK_USER_ENTITY, username));
auth = ldapTemplate.authenticate(BASE_DN, filter.encode(), password);
log.info("is Valid user :" + auth);
} catch (Exception e) {
log.error("error while creating LDap Template", e);
}
return auth;
}