プロパティファイルで「×」が文字化けする
mabushiisign
眩しいサインを見ただろう
企業内システムとかでは、認証をLDAPを使ってやることがある。
でも、今までまったく扱ったことがなかった。
知ると認証は、ID/パスワードを使用して接続できれば認証OKとするのが一般的みたいだ。
Javaでは、javax.namingパッケージを使うと簡単に接続ができるみたい。
1import java.util.Hashtable;
2import javax.naming.AuthenticationException;
3import javax.naming.Context;
4import javax.directory.DirContext;
5import javax.directory.InitialDirContext;
6
7
8//LDAP接続情報
9Hashtable env = new Hashtable();
10env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
11env.put(Context.PROVIDER_URL, "ldap://192.168.0.10:10389/"); //LDAPサーバ
12env.put(Context.SECURITY_AUTHENTICATION, "simple");
13env.put(Context.SECURITY_PRINCIPAL, "uid=admin;ou=system"); //ID, 組織
14env.put(Context.SECURITY_CREDENTIALS, "secret"); //パスワード
15
16try {
17 DirContext ctx = InitialDirContext(env);
18 //コンテキストのクローズ
19 ctx.close();
20} catch (AuthenticationException ae) {
21 //認証エラー
22} catch (Exception e) {
23 //その他のエラー
24}
リトライ処理を行う場合は、AuthenticationExceptionははっきりと認証が失敗したのが、明確なのでリトライを行う必要はないだろうから、Exceptionの場合だけでイイと思う。
ちなみに、LDAP認証をやるとなった場合、開発のテスト用にLDAPサーバが必要となる。
そんなときは、ApacheプロジェクトのApacheDSが便利である。
このプロジェクトでは、LDAPサーバのApacheDSの他に
管理ツールとなるEclipseベースのApache Direcotry Studioという2つのプロダクトがある。
しかも、インストールはインストーラに従って「はい」を押していけば簡単に出来てしまう。
そのApache DSの初期に設定されているadminユーザで認証する方法が上記サンプルと
なっている。(ID: admin / パスワード: secret)
これだけで簡単にLDAP認証が出来てしまうのだから便利である。