package com.connsec.util;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.directory.DirContext;
import javax.naming.directory.SearchControls;
import org.apache.log4j.Logger;
/**
* @author Crystal
*
*/
public class ActiveDirectoryUtils extends LdapUtils {
final static Logger logger = Logger.getLogger(ActiveDirectoryUtils.class);
protected String domain;
/**
*
*/
public ActiveDirectoryUtils() {
super();
}
public ActiveDirectoryUtils(String providerUrl,String principal,String credentials,String baseDN,String domain) {
this.providerUrl=providerUrl;
this.principal=principal;
this.credentials=credentials;
this.searchScope=SearchControls.SUBTREE_SCOPE;
this.baseDN=baseDN;
this.domain=domain.toUpperCase();
}
public ActiveDirectoryUtils(String providerUrl,String principal,String credentials,String domain) {
this.providerUrl=providerUrl;
this.principal=principal;
this.credentials=credentials;
this.searchScope=SearchControls.SUBTREE_SCOPE;
this.domain=domain.toUpperCase();
}
public ActiveDirectoryUtils(DirContext dirContext) {
this.ctx=dirContext;
}
//connect to ldap server
@Override
public DirContext openConnection(){
logger.info("PROVIDER_URL:"+providerUrl);
logger.info("SECURITY_PRINCIPAL:"+principal);
logger.info("SECURITY_CREDENTIALS:"+credentials);
//LDAP
Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
props.setProperty(Context.URL_PKG_PREFIXES, "com.sun.jndi.url");
props.setProperty(Context.REFERRAL, referral);
props.setProperty(Context.SECURITY_AUTHENTICATION, "simple");
props.setProperty(Context.PROVIDER_URL, providerUrl);
if(domain.indexOf(".")>-1){
domain=domain.substring(0, domain.indexOf("."));
}
logger.info("PROVIDER_DOMAIN:"+domain);
String activeDirectoryPrincipal=domain+"\\"+principal;
logger.debug("Active Directory SECURITY_PRINCIPAL : "+activeDirectoryPrincipal);
props.setProperty(Context.SECURITY_PRINCIPAL,activeDirectoryPrincipal);
props.setProperty(Context.SECURITY_CREDENTIALS, credentials);
if(ssl){
if(System.getProperty("javax.net.ssl.trustStore")==null){
System.setProperty("javax.net.ssl.trustStore", trustStore);
System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword);
}
props.put(Context.SECURITY_PROTOCOL, "ssl");
props.put(Context.REFERRAL, "follow");
}
return InitialDirContext(props);
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain.toUpperCase();
}
}