LDAP操作代码样例 初始化LDAP 目录服务上下文
该例子中,我们使用uid=linly,ou=People,dc=jsoso,dc=net这个账号,链接位于本机8389端口的LDAP服务器(ldap://localhost:8389),认证方式采用simple类型,即用户名/密码方式。
private static void initialContext() throws NamingException{
if(singleton == null){
singleton = new LDAPConnection();
/*
* 在实际编码中,这些环境变量应尽可能通过配置文件读取
*/
//LDAP服务地址
singleton.sLDAP_URL = "ldap://localhost:8389";
//管理员账号
singleton.sMANAGER_DN = "uid=linly,ou=People,dc=jsoso,dc=net";
//管理员密码
singleton.sMANAGER_PASSWORD = "coffee";
//认证类型
singleton.sAUTH_TYPE = "simple";
//JNDI Context工厂类
singleton.sCONTEXT_FACTORY = "com.sun.jndi.ldap.LdapCtxFactory";
singleton.envProps.setProperty(Context.INITIAL_CONTEXT_FACTORY, singleton.sCONTEXT_FACTORY);
singleton.envProps.setProperty(Context.PROVIDER_URL, singleton.sLDAP_URL);
singleton.envProps.setProperty(Context.SECURITY_AUTHENTICATION, singleton.sAUTH_TYPE);
singleton.envProps.setProperty(Context.SECURITY_PRINCIPAL, singleton.sMANAGER_DN);
singleton.envProps.setProperty(Context.SECURITY_CREDENTIALS, singleton.sMANAGER_PASSWORD);
/*
* 绑定ldap服务器
*/
singleton.dirCtx = new InitialDirContext(singleton.envProps);
}
}
通过一个Hashtable或者Properties对象为LDAP的Context设置参数,而后初始化InitialDirContext,即可绑定LDAP服务。这相当于JDBC中获取数据库的Connection对象。
绑定/创建LDAP条目对象
用户可以使用bind方法创建新的LDAP条目,下面的代码创建一个DN:"ou=Employee , dc=jsoso ,dc=net"的OrganizationUnit类LDAP条目如下:
public boolean createOrganizationUnit(){
String ldapGroupDN = "ou=Employee , dc=