企業内システムとかでは、認証をLDAPを使ってやることがある。
でも、今までまったく扱ったことがなかった。
知ると認証は、ID/パスワードを使用して接続できれば認証OKとするのが
一般的みたいだ。
Javaでは、javax.namingパッケージを使うと簡単に接続ができるみたい。
import java.util.Hashtable; import javax.naming.AuthenticationException; import javax.naming.Context; import javax.directory.DirContext; import javax.directory.InitialDirContext; //LDAP接続情報 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://192.168.0.10:10389/"); //LDAPサーバ env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, "uid=admin;ou=system"); //ID, 組織 env.put(Context.SECURITY_CREDENTIALS, "secret"); //パスワード try { DirContext ctx = InitialDirContext(env); //コンテキストのクローズ ctx.close(); } catch (AuthenticationException ae) { //認証エラー } catch (Exception e) { //その他のエラー }
リトライ処理を行う場合は、AuthenticationExceptionははっきりと認証が失敗したのが
明確なのでリトライを行う必要はないだろうから、Exceptionの場合だけでイイと思う。
ちなみに、LDAP認証をやるとなった場合、開発のテスト用にLDAPサーバが必要となる。
そんなときは、ApacheプロジェクトのApacheDSが便利である。