/** * Yona, 21st Century Project Hosting SW *
* Copyright Yona & Yobi Authors & NAVER Corp.
* https://yona.io
**/
package utils;
import models.User;
import models.support.LdapUser;
import org.apache.commons.lang3.StringUtils;
import play.Play;
import javax.annotation.Nonnull;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.*;
import java.util.Hashtable;
public class LdapService {
public static final boolean useLdap = Play.application().configuration().getBoolean("application.use.ldap.login.supoort",false);
private static final String HOST = Play.application().configuration().getString("ldap.host", "127.0.0.1");
private static final String PORT = Play.application().configuration().getString("ldap.port", "389");
private static final String BASE_DN = Play.application().configuration().getString("ldap.baseDN", "");
private static final String DN_POSTFIX = Play.application().configuration().getString("ldap.distinguishedNamePostfix", "");
private static final String PROTOCOL = Play.application().configuration().getString("protocol", "ldap");
private static final String LOGIN_PROPERTY = Play.application().configuration().getString("ldap.loginProperty", "sAMAccountName");
private static final String DISPLAY_NAME_PROPERTY = Play.application().configuration().getString("ldap.displayNameProperty", "displayName");
private static final String USER_NAME_PROPERTY = Play.application().configuration().getString("ldap.userNameProperty", "CN");
public static final boolean USE_EMAIL_BASE_LOGIN = Play.application().configuration().getBoolean("ldap" +
".options.useEmailBaseLogin", false);
public static final boolean FALLBACK_TO_LOCAL_LOGIN = Play.application().configuration().getBoolean("ldap" +
".options.fallbackToLocalLogin", false);
private static final String EMAIL_PROPERTY = Play.application().configuration().getString("ldap" +
".emailProperty", "mail");
private static final String ENGLISH_NAME_PROPERTY = Play.application().configuration()
.getString("ldap.options.englishNameAttributeName", "");
private static final int TIMEOUT = 5000; //ms
public LdapUser authenticate(String username, String password) throws NamingException {
String guessedUserIdentity = guessedUser(username);
Hashtable