忍者ブログ

「LDAP検索」の詳細記事: Javaってまだいけますか

Javaってまだいけますか

いっぱいいっぱいで無理なので学んだ事をいちいちメモっていくブログです。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Navigation

LDAP検索

LDAPサーバへ検索条件を指定して検索を実行する場合のメモ。
基本的には、

(属性名=条件値)

のような形式でフィルタ条件を指定します。

・AND検索
(&(objectClass=Person)(cn=Babs*))


・OR検索
(|(objectClass=Person)(cn=Babs*))


・NOT検索
(!(objectClass=Person))


条件値に特殊文字を含む場合はエスケープする必要があります。
public String escape(String str) {

if(str == null) {
return "\\00";
}

// 最初に\をエスケープ
if(str.indexOf("\\") >= 0) {
str = StringUtils.replace(str, "\\", "\\5C");
}

if(str.indexOf("*") >= 0) {
str = StringUtils.replace(str, "*", "\\2A");
}
if(str.indexOf("(") >= 0) {
str = StringUtils.replace(str, "(", "\\28");
}
if(str.indexOf(")") >= 0) {
str = StringUtils.replace(str, ")", "\\29");
}
return str;
}


サンプル。
public void search(String cn) {
String filter = "(cn=*" + escape(cn) + ")";

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

Hashtable env = getEnv();
DirContext dirContext = new InitialDirContext(env);

try {
NamingEnumeration entries = dirContext.search([baseDn], filter, ctls);

while (entries.hasMore()) {
javax.naming.directory.SearchResult entry = (javax.naming.directory.SearchResult) entries.next();

// 省略
}

} finally {
dirContext.close();
}
}

public Hashtable getEnv() {
Hashtable env = new Hashtable();
env.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory");
env.put("java.naming.provider.url", "ldap://" + [LDAPサーバホスト名] + ":" + [LDAPサーバポート番号] + "/");
env.put("java.naming.security.authentication", "simple");
env.put("java.naming.security.principal", "");
env.put("java.naming.security.credentials", "");
return env;
}

参考
PR

Navigation

「LDAP検索」にトラックバックする

「LDAP検索」へのトラックバック

「LDAP検索」へのコメント

「LDAP検索」にコメントする

コメント作成

Navigation

Copyright ©  Javaってまだいけますか  All Rights Reserved.
  • 忍者ブログ
  • [PR]

menu

ブログ内検索

カテゴリー

カウンター

忍者アド

リンク

最新CM

[07/17 セバ]
[12/27 NONAME]

最新記事

(10/15)
(10/01)
(08/12)
(08/12)
(08/11)

プロフィール

HN:
takacy.k
年齢:
44
性別:
男性
誕生日:
1979/08/13
趣味:
自己紹介:
個人的なメモですので、投稿内容について真偽を保証するものではありません。また、当ブログの内容をご利用になったことによる(以下略)

最新TB

RSS

アーカイブ

アクセス解析