ldap (Active Directory) 에 로그인 정보 확인
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
public class AdTest {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception {
/*
#LDAP Setting
ldap.usage=yes
ldap.server1.ip=*.*.46.182
ldap.server1.port=389
ldap.server2.ip=*.*.46.183
ldap.server2.port=389
ldap.domain.name=hdv-ad
ldap.root.path=ldap://*.*.46.182:389/DC=HDVP-**,DC=COM
*/
String ntUserId = "Z0551";
String ntPasswd = "123456789!";
String url = "ldap://*.*.46.182:포트";
String domain = "domain"; // 회사명이 domain.com이라면 DOMAIN
String searchBase = "DC=**-AD,DC=COM"; // 검색대상 tree
//Z0564 / 12345678!
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, domain + "\\" + ntUserId);
env.put(Context.SECURITY_CREDENTIALS, ntPasswd);
try {
LdapContext ctx = new InitialLdapContext(env, null);
SearchControls sc = new SearchControls();
sc.setSearchScope(SearchControls.SUBTREE_SCOPE);
sc.setReturningAttributes(new String[] { "cn", "mail", "name" });
NamingEnumeration results = ctx.search(searchBase, "sAMAccountName=" + ntUserId, sc);
while (results.hasMoreElements()) {
SearchResult sr = (SearchResult) results.next();
Attributes attrs = sr.getAttributes();
System.out.println("attributes: " + attrs);
}
results.close();
} catch(Exception e) {
System.out.println("잘못된 정보임");
}
}
}