(若要修改密码、修改权限等其他操作,需要先导出ad域的证书,并导入到jdk中,连接时使用636端口号(默认),使用ldaps协议进行连接)
1. 初始化AD域服务连接
public static LdapContext getLdapContext() {
Properties properties= new Properties();
String ldapUserName = "";//AD管理员系统的账号
String ldapPassword = "";//AD管理员系统的password
String ldapIP = "127.0.0.1";//ad域的ip地址
String ldapPost = "389";//ad域的port ,默认为389
String ladpSecurityAuthentication = "simple";
String ldapURL = "ldap://" + ldapIP + ":" + ldapPost;// ldap://ip:port
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");// LDAP工厂类
properties.put(Context.SECURITY_AUTHENTICATION, ladpSecurityAuthentication);//LDAP访问安全级别:"none","simple","strong"
properties.put(Context.SECURITY_PRINCIPAL, ldapUserName);
properties.put(Context.SECURITY_CREDENTIALS, ldapPassword);
properties.put(Context.PROVIDER_URL, ldapURL);
try {
return new InitialLdapContext(properties, null);
} catch (Exception e) {
LOG.info("AD域服务连接认证失败");
e.printStackTrace();
}
return null;
}
如果执行以上代码没有抛出异常,则连接成功
2. 关闭ad域连接
/**
* @Description:关闭AD域服务连接
* @author qw
* @date 2022-03-25
*/
public static void close(LdapContext lc) {
if (lc != null) {
try {
lc.close();
} catch (NamingException e) {
LOG.info("" + e);
}
}
}
3. 添加ad域用户
- 根据完整的可分辨名称进行添加
例如(CN=test001,OU=测试部门01,OU=测试部门,DC=qw,DC=com)
名称对应关系如下
public static void add() {
LdapContext lc = getLdapContext();
try {
Attributes attrs = new BasicAttributes(true); //参数集合
attrs.put("objectClass", "user");
attrs.put("samAccountName", "test001");
attrs.put("displayName", "test001");
lc.createSubcontext("CN=test001,OU=测试部门01,OU=测试部门,DC=qw,DC=com", attributes);
} catch (Exception e) {
e.printStackTrace();
LOG.info("新增AD域用户失败:" + e);
} finally {
close(lc);
}
}