LDAP認証ルーチンではjndi
、アプリケーションがLDAPで自身を認証するために使用するユーザーアカウントを作成します。アプリケーションがjndiユーザーの識別名を使用して接続を確立すると(例: uid=jndi,ou=branch,dc=com,dc=your,dc=organization
)、(ユーザーノードにブランチを提供します)ツリー)次のコードを使用して、ユーザーuid
がLDAPツリーにいるかどうかを確認します。
public String findUserDnByBranchAndUid(String branchName, String uid) throws NamingException {
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchControls.setCountLimit(1);
NamingEnumeration<SearchResult> answer;
answer = dirContext.search(branchName, String.format("(uid=%s)", uid), searchControls);
if (answer.hasMoreElements()) {
SearchResult searchResult = answer.nextElement();
return searchResult.getNameInNamespace();
} else {
return null;
}
}
このように呼び出す:
String userDn = findUserDnByBranchAndUid("ou=users,dc=com,dc=your,dc=organization", "jsmith");
空でない場合userDn
、ユーザーはツリーに存在し、jndiユーザーDNの代わりにそのDN(およびユーザーパスワード)を使用して新しい接続の確立に進みます。
エブリシングがうまくいけば、ユーザーjsmith
は、ユーザーフレンドリーではないDNを提供することなく、自分のIDだけでその資格情報を使用してログインします。