java代码通过ldaps连接AD域,实现写数据到AD域

  1. 业务系统与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实现方法

  1. 使用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);
	}
  1. 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端口方式不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

見贤思齊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值