RiceBall融解

teramin.exblog.jp
ブログトップ
2012年 08月 27日

【備忘録】 JNDIを利用してLDAPから情報を取得する方法

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;


public class Main {

public static void main(String[] args) {

System.out.println("Start.");

String url ="ldap://hogehoge.jp";
String dn = "uid=xxxxx,ou=people,dc=example,dc=com";
String pass = "pass";
String filter = "uid=xxxxx";

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_PRINCIPAL, dn);
env.put(Context.SECURITY_CREDENTIALS, pass);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put("java.naming.ldap.version" , "3");
env.put(Context.REFERRAL, "follow");

String baseDN = "dc=example,dc=com";

DirContext dcon = null;

try {
dcon = new InitialDirContext(env);

SearchControls sc = new SearchControls();
sc.setSearchScope(SearchControls.SUBTREE_SCOPE);

NamingEnumeration results = dcon.search(baseDN, filter, sc);

while (results.hasMore()) {
SearchResult result = (SearchResult) results.next();
//NamingEnumeration attrs = result.getAttributes().getAll();//全カラム取得する場合(今はコメントアウト)
Attribute value = result.getAttributes().get("cn");//cnを取得する
System.out.println(value.toString());
System.out.println();
}
} catch (NamingException e) {
System.out.println(e.toString());
} finally {
if (dcon != null) {
try {
dcon.close();
} catch (NamingException e) {
System.out.println(e.toString());
}
}
}
System.out.println("Finish.");
}

}

Anonymousで取得できる項目ならdnとpassは不要。
[PR]

by teramin | 2012-08-27 17:08 | IT/Web関連


<< からあげクン 醤油ダレ味      からあげクン 海鮮塩ダレ味 >>