`
wls981
  • 浏览: 135728 次
  • 性别: Icon_minigender_1
  • 来自: 桂林
社区版块
存档分类
最新评论

用JAVA通过LDAP修改AD用户密码注意事项

    博客分类:
  • java
阅读更多
    最近要用java来修改windows 2003的Active Directory(简称AD)上的用户,包括新增、修改、删除,普通的操作这里就不说了,网上有一大堆的资料,这里记述一下本人操作过程中遇到的问题及解决方法。
    通过ldap来修改AD的用户信息,除了修改密码外,其他的都可以使用非安全的连接进行操作,也就是可以不走SSL连接来操作,注意AD的普通端口是389,SSL端口是636。
    当使用SSL连接修改密码时,需要在连接端安装证书,怎么获取证书,本人使用网上其他人介绍的证书方法,全是无法成功,都是出现 unable to find valid certification path to requested target  错误,最终经一朋友提示,使用其他方法获取到正确的证书,具体如下:
    1、安装证书服务。在ldap服务器上安装证书服务。证书服务的安装没什么特别的注意,请参考其他人的文章。
   
    2、获取客户端证书。别人都是通过下载证书的方式来获取证书,但是我通过这种方式就是无法成功修改密码,也都是提示 unable to find valid certification path to requested target 这个错误。我的操作方法为,用IE通过SSL直接连接ldap服务器(也就是安装AD的那台机器),使用636端口,类似于  https://192.168.0.111:636  ,连接的时候会提示安装证书,这时候把这个证书保存下来,即为需要的客户端证书。

    3、连接。得到证书后,我在连接的时候成功了,但在修改AD用户密码的时候还是报错,但这次的错误为  javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 0000052D: SvcErr: DSID-031A0FC0, problem 5003 (WILL_NOT_PERFORM), data 0    ,操作不支持错误,在这个问题了转了好久都没解决,后来无意中看到一篇文章讲到AD中的密码策略问题,才想起来windows2003中AD中的默认密码策略有长度限制和复杂性要求,所以才导致出现OperationNotSupportedException异常,记得在域控制器上查看自己的域策略。

后记:由于水平原因,就因为证书的问题搞了两天多才搞定,其实通过调整域策略可以使用修改密码不需要走SSL通道的,但这都是旁门左道,希望写下这篇文章对大家有所帮助。
分享到:
评论
11 楼 sunjiankirk 2014-11-05  
博主,我已经解决这个问题了!
主要是userAccountControl这个属性值设置的问题(创建新用户时,如要设定密码,不能使用默认的ACCOUNTDISABLE+PASSWD_NOTREQD+NORMAL_ACCOUNT,只需要NORMAL_ACCOUNT即可),希望博主及时更新代码。
具体参见http://www.forumeasy.com/forums/thread.jsp?tid=134931028635&fid=ldapprof9&highlight=How+add+active+user+account+Active+Directory
10 楼 sunjiankirk 2014-11-04  
博主你好,首先非常感谢你的这篇文章。点出AD操作的关键点。
我现在是在windows 2008 r2上测试,发现,创建用户时,
如果直接设置unicodePwd属性,会出现错误:LDAP error code 16,有未识别的属性。
我看到其他人的代码,也提到需要先创建用户,再设置密码。

这个博主,有什么可以赐教的。
9 楼 乱世小雄 2014-05-16  
Leecupn 写道
楼主,我和三楼的情况是一样的,我获取证书并安装完成了之后,为什么还是报:
javax.naming.CommunicationException: simple bind failed: 192.168.136.202:636 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]
异常呢??
怎样才能与好好你交流下?
期待回复,谢谢!

8 楼 jakejone 2012-12-04  
有帮助。谢谢啦
7 楼 qlong8807 2012-11-14  
能问一下,怎么安装证书服务吗?
6 楼 wls981 2009-09-02  
其实只要是AD中提供的对象,你都是可以修改的,group如果是AD提供的对象,那肯定也是可以修改的,修改方法应该跟用户类似。
5 楼 Leecupn 2009-08-21  
to wls981:
谢谢,问题我前几天已经解决了,确实是证书没导入。
请问一下,除了对用户编辑外,我可以对用户组,也就是group进行增、删操作吗?这是一个比较严峻的问题啊
期待回复。
4 楼 wls981 2009-08-19  
to Leecupn:

你证书正确的导入到JDK里了吗?连接的时候相应的证书路径是否指定正确呢?
3 楼 Leecupn 2009-08-17  
楼主,我获取证书并安装完成了之后,为什么还是报:
javax.naming.CommunicationException: simple bind failed: 192.168.136.202:636 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]
异常呢??
怎样才能与好好你交流下?
期待回复,谢谢!
2 楼 wls981 2009-08-09  
具体的操作方法网上有很多代码你可以找找看,只要注意证书正确即可。
1 楼 zhangfeiii 2009-05-08  
我們公司B/S架構的系統,目前需要直接在界面上操作AD用戶信息(比如用戶帳號停用 / 用戶密碼Update等),請問能否詳細敘述下技術層面,謝謝!

相关推荐

Global site tag (gtag.js) - Google Analytics