-
业务系统与AD域集成
在测试业务系统与AD域集成时,测试发现使用389端口连接AD域,可以连接上,但是无法创建账号到域。使用389端口创建账号的具体报错如下:
javax.naming.OperationNotSupportedException: [LDAP: error code 53 – 0000001F: SvcErr: DSID-031A124C, problem 5003 (WILL_NOT_PERFORM), data 0
网上查了些资料,说是使用ssl加密方式才能实现写数据到域。以下是使用ldaps连接AD域的java实现方法
-
使用ldaps同步AD域的java方法
public static InitialLdapContext sslInit() throws NamingException{
String userName = "CN=系统同步账号,OU=service account,OU=101,OU=test,DC=test,DC=com,DC=cn"; //SSL 连接的GUID
String password = "**********";
String Url = "ldaps://testad01.test.com.cn:636";
String user = userName;
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.PROVIDER_URL,Url);
env.put(Context.AUTHORITATIVE, "true");
String keystore ="/usr/lib/jvm/java-8-openjdk-arm64/jre/lib/security/cacerts"; //证书的安装目录,两个证书都安装了,可以使用不同别名
System.setProperty("javax.net.ssl.trustStore",keystore);
env.put(Context.SECURITY_PROTOCOL, "ssl");
return new InitialLdapContext(env,null);
}
-
ldaps连接与ldap连接的区别
在测试AD域中,创建的系统同步账号的登录名是adsys。
配置ldap的方式,使用adsys账号就可以实现连接:java.naming.security.principal=adsys@test.com.cn,
ldaps的方式,只能用”CN=系统同步账号,OU=service account,OU=101,OU=test,DC=test,DC=com,DC=cn”; 而不能直接使用adsys登录账号,这点与389端口方式不同。