最近公司要用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<wbr>.html</wbr>
http://wenku.baidu.com/view/91fad77b5acfa1c7aa00ccbc<wbr>.html</wbr>
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
其中:
<wbr><wbr><wbr><wbr>D:\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\bin是keytool所在的目录,因为这个目录才是在java环境下的,如果直接在外面用会提示找不到java环境<br><wbr><wbr><wbr><wbr>D:\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jr<br>
e\lib\security\cacerts<wbr><wbr>这是我的cacerts所在的路径,因为证书必须要注入这个文件里面才能得到所有Java程序的信任<br><wbr><wbr><wbr><wbr>alias DA3是AD的别名,可以随便设置<br><wbr><wbr><wbr><wbr>file D:\DA3.cer是第1步中导入的证书的地址</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
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端口:如:
<wbr>ldapEnv.put(Context.PROVIDER_URL, "</wbr>ldap://151.28.1.115:636");
完整的连接写法:
String keystore = "D:/MyEclipse/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/lib/security/cacerts";<wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>System.setProperty("javax.net.ssl.trustStore", keystore);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Hashtable ldapEnv = new Hashtable();<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>ldapEnv.put(Context.PROVIDER_URL, "</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>ldap://151.28.1.115:636");
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>ldapEnv.put(Context.SECURITY_PRINCIPAL, "CN=cyzyadmin,CN=users,DC=mdm,DC=com");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>ldapEnv.put(Context.SECURITY_CREDENTIALS, "abc22b2="); // 密码<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>ldapEnv.put(Context.SECURITY_PROTOCOL, "ssl");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>ctx = new InitialLdapContext(ldapEnv, null);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr></wbr>
部分参考链接(这些参考都不是太详细准确,具体的还是看上面我写的):
修改密码要用ssl协议来做(http://www.wosign.com/support/ssl_bak_import.htm):
1.安装SSL证书,请参考http://wenku.baidu.com/view/cc038dca05087632311212bc<wbr>.html</wbr>,
2.在本地,也就是Java程序运行端获取导出SSL证书
请参考:方法一:http://wls981.iteye.com/blog/316012<wbr><wbr>中的第二步<br><wbr><wbr><wbr><wbr><wbr><wbr>方法二:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>http://wenku.baidu.com/view/e30d73bcc77da26925c5b0c8<wbr>.html</wbr>
3.代码上的区别,对连接LDAP服务器的初始化会不同:
<wbr><wbr><wbr>需要加上:env.put(Context.SECURITY_PROTOCOL, "ssl");<br><wbr><wbr><wbr><wbr>需要在adport设置成636<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>env.put(Context.PROVIDER_URL, "ldaps://" + BaseProperties.adip + ":"<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>+ BaseProperties.adport);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
server 2008 用户可参考:
http://wenku.baidu.com/view/d49c0ec5aa00b52acfc7ca53<wbr>.html</wbr>
http://wenku.baidu.com/view/91fad77b5acfa1c7aa00ccbc<wbr>.html</wbr>
分享到:
相关推荐
java JNDI方式修改AD域密码 免ssl验证方式修改AD域密码 LDAP SSL 证书 javassl 很实用的一段代码,免去了复杂的证书操作过程。
JAVA ldap AD 域 免证书 查询 修改 删除 新增 启用 禁用 修改密码
java使用ldap修改ad域用户密码
配合本人AD域证书导入的配置博客,本代码为AD域用户插入和密码修改
介绍Ad域服务器证书如何申请,如何导出,如何导入到java秘钥库,地址:https://blog.csdn.net/hc1017/article/details/81293323 实现ssl 修改ad用户密码,禁用启用用户。有两个demo测试文
验证AD域用户登录 ,传入用户名(userName)和密码(password)进行验证。
打包命令为:mvn clean package Jar包运行命令为:java -jar C:\Users\z00459km\Desktop\demo-0.0.1-SNAPSHOT.jar 亲测AD域认证通过,内容包含两种认证信息写法。
主要介绍了JAVA使用Ldap操作AD域的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
SynchAccountToAD2012实例,需要的可以下载,封装了
JAVA JNDI免证书修改AD域密码
使用ssl keystore 证书修改AD域用户密码
java对ad域的一些操作,里面的一些ip要进行一些修改就能用
java使用ldap修改ad域用户密码收集.pdf
实现了用java对AD域的增删改查功能,这只是当时我自己试验时候的例子。功能都实现了。
java实现
验证AD域账号登陆,获取AD域用户列表,获取用户邮箱,修改密码等AD域操作
java操作ldap修改ad密码,新增ad账号,一个较为简单的demo,供大家学习参考。
世上最全通过利用JAVA新建、修改、删除AD用户、添加至组及更新密码,包括证书服务器的配置、JAVA证书导...
VB.NET WEB开发使用AD域用户名和密码登录
AD域分页查询全部域用户数据