最近公司要用Java进行AD操作,其他操作都能实现,网上都能找得到。
但就是关于密码的修改,还有用户的启用操作不能用。
后来得知需要安装证书!导入证书!使用SSL协议!
网上这方面的资料也很多,但是东拉西扯,说也说不明白,怎么操作都不行,让我搞了好几天,最后还是搞出来了,为了不让大家再受困扰,我将一些关键和重点的内容总结,如下:
如果仍然不能使用,可以给我Email:lizjohn@sina.com,希望真的能帮助你们:
另外,希望大家关注我的淘宝网店:http://shop105533306.taobao.com/?spm=0.0.0.0.8jr4dx,你的关注是我前进的动力,谢谢!
微软认为密码是ad中的最核心属性,所以修改密码与修改其他属性都不一样!需要安装证书!使用SSL协议
server 2008 用户相关操作可参考:
http://wenku.baidu.com/view/d49c0ec5aa00b52acfc7ca53
http://wenku.baidu.com/view/91fad77b5acfa1c7aa00ccbc
1.在服务端安装完证书(安装是尽量完全的安装,把能选的复选框全勾上,不然很可能证书不能使用),将证书复制到本地的任何一个路径,如:D:\。
2.接下来通过MyEclipse 的bin(如:D:\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\bin)目录下的keytool.exe工具,将其复制到C:\Windows\System32(这是win7的,其他系统放到对应位置,这样做是为了下一步在CMD中可以操作)
3.打开CMD ,通过keytool命令将刚才D:\的证书导入到JRE的jre\lib\security下的cacerts中。
这是我的CMD命令操作:D:\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\bin>keytool -imp
ort -keystore D:\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jr
e\lib\security\cacerts -storepass changeit -keypass changeit -alias DA3 -file D:
\DA3.cer
其中:
e\lib\security\cacerts
4.证书导入成功以后,就基本没问题了。主要是代码上应该注意的事项:
在连接LDAP服务器中的那个用户名要是系统的管理员
如:
ldapEnv.put(Context.SECURITY_PRINCIPAL,"CN=admin,CN=users,DC=mdm,DC=com");
在AD的密码修改操作中,密码应该符合AD的密码策略(长度、复杂度,策略是可以调整的)。
使用SSL协议安全协议(这个主要针对修改密码操作,当然其他操作也可以用)
如:
ldapEnv.put(Context.SECURITY_PROTOCOL, "ssl");
使用636端口:如:
完整的连接写法:
String keystore = "D:/MyEclipse/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/lib/security/cacerts";
部分参考链接(这些参考都不是太详细准确,具体的还是看上面我写的):
修改密码要用ssl协议来做(http://www.wosign.com/support/ssl_bak_import.htm):
1.安装SSL证书,请参考http://wenku.baidu.com/view/cc038dca05087632311212bc
2.在本地,也就是Java程序运行端获取导出SSL证书
请参考:方法一:http://wls981.iteye.com/blog/316012
3.代码上的区别,对连接LDAP服务器的初始化会不同:
server 2008 用户可参考:
http://wenku.baidu.com/view/d49c0ec5aa00b52acfc7ca53
http://wenku.baidu.com/view/91fad77b5acfa1c7aa00ccbc