LDAP 目录服务的操作方式,JNDI 的灵活调用接口,再加上 Java 这门老牌语言的生态支持,搞企业应用的你应该不会陌生。
《LDAPAccessUsingJNDI.pdf》这篇文档讲得就挺清楚,从 JNDI 怎么初始化,到 LDAP 查询怎么写,流程走得比较顺。尤其对刚入门目录服务的开发者来说,能少走不少弯路。
JNDI 的优点挺多,比如跨平台
、服务独立
这些特点,在部署和维护的时候就会。举个简单例子:你写了个认证模块,接上 LDAP,不管底层是 OpenLDAP 还是 Active Directory,基本不用改代码,直接切换配置就行。
LDAP 的数据结构是树状的,也就是DIT(Directory Information Tree)。里面每个节点都有自己的DN
(Distinguished Name),这个概念一开始有点绕,其实就像文件路径一样——谁在哪一层,路径就怎么写。
文档里也贴了段 JNDI 访问 LDAP 的示例代码,比如怎么设置Context
、怎么搜索、怎么解析结果。没太多花里胡哨的封装,比较适合理解底层逻辑。像:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389");
DirContext ctx = new InitialDirContext(env);
这类代码跑起来快能看到效果,调试也方便,适合做原型或者集成测试。
如果你正好在搞权限控制、身份验证相关的东西,建议花点时间把这篇文档过一遍。不长,但讲得还蛮扎实,挺适合用来打基础。