最近要用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通道的,但这都是旁门左道,希望写下这篇文章对大家有所帮助。
分享到:
相关推荐
Java 使用 LDAP 修改 AD 域用户密码 本文将详细介绍如何使用 Java 语言通过 LDAP 协议修改 Windows Active Directory 域用户的密码。同时,本文也将对相关概念进行解释,以便读者更好地理解整个过程。 LDAP 概念 ...
Java 使用 LDAP 修改 AD 域用户密码收集是指通过 Java 语言使用 LDAP 协议修改 Active Directory 域用户的密码。下面是相关知识点的总结: 1、LDAP 无法获取 Window s Active Directory 用户密码。这是因为 LDAP ...
标题“java 使用 ldap 修改 ad 域用户密码.pdf”和描述“java 使用 ldap 修改 ad 域用户密码.pdf”均指向了使用 Java 语言通过 LDAP 协议修改 Active Directory 域用户密码的主题。 二、标签 标签“技术”表明本...
在这篇文章中,我们将探讨使用 JAVA 实现 LDAP 的 AD 域免证书查询、修改、删除、新增、启用、禁用和修改密码的操作。 首先,让我们了解什么是 LDAP 和 AD 域。LDAP(Lightweight Directory Access Protocol)是一...
Java 使用 LDAP 修改 AD 域中的用户密码是通过 Java 语言使用 LDAP 协议连接到 Active Directory 域控制器,以修改用户密码的操作。以下是相关知识点的详细解释。 一、LDAP 无法获取 Windows Active Directory 用户...
1. **导入AD域证书**:在Java应用中使用AD域服务之前,必须先导入AD域的证书,以建立安全的SSL/TLS连接。这通常涉及将证书导入到Java的信任库(cacerts),可以通过`keytool`命令行工具完成。 2. **配置环境**:...
4. **修改密码**:使用`DirContext.modifyAttributes()`方法,更新用户对象的`unicodePwd`属性。这个属性是AD用来存储密码的特殊属性,其值需要编码为特定格式。 ```java String userDN = "CN=John Doe,OU=Users,...
JAVA中使用LDAP进行用户认证 JAVA中使用LDAP进行用户认证是指在JAVA应用程序中使用轻量级目录访问协议(LDAP)来进行用户身份验证。LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行...
在本文中,我们将深入探讨如何使用Java通过Ldap与Active Directory (AD)域进行交互。首先,我们需要了解AD域是一个集中式服务,用于管理网络中的用户、计算机和其他资源的身份和权限。Ldap(轻量级目录访问协议)是...
在本项目中,可能包含了一个或多个Java类,这些类封装了与AD域交互的逻辑,如创建用户、设置用户状态(例如启用/禁用)、以及修改用户密码。 创建用户通常涉及到以下步骤: 1. 连接到AD服务器,这通常通过提供...
本文将深入探讨如何使用Java通过LDAP(轻量级目录访问协议)和SSL(安全套接层)来实现用户和组织(部门)的增删改查操作,并结合证书确保通信的安全性。这些功能通常用于大型企业的用户管理,例如Active Directory...
在IT行业中, Lightweight Directory Access Protocol (LDAP) 是一种用于存储和检索目录信息的标准协议,而Active Directory (AD) 是微软提供的目录服务,广泛应用于企业环境中进行用户身份验证和权限管理。Java和...
1. **LDAP操作**:代码可能会使用特定的库(如Python的ldap3库或Java的JNDI)进行连接、搜索、修改等操作。这可能涉及bind(连接)、search(查询)、modify(修改)等 LDAP 操作。 2. **密码策略**:可能涉及到...
通过 JNDI,开发者可以使用 Java 语言来访问和操作 LDAP 服务器。 在本文中,我们将讨论 Java 语言如何使用 JNDI 对 LDAP 服务器进行增删改查等操作。我们将使用一个简单的示例程序来演示如何使用 JNDI 连接到 LDAP...
"AD自助修改密码"是AD服务中的一个重要功能,它允许用户通过Web界面自主更改自己的密码,无需管理员介入,提高了效率并降低了支持成本。 在传统的AD管理中,如果用户忘记密码或需要更改密码,通常需要联系管理员来...
世上最全通过利用JAVA新建、修改、删除AD用户、添加至组及更新密码,包括证书服务器的配置、JAVA证书导...
在这个"修改AD域密码及新增账号demo.zip"压缩包中,我们看到的是一个基于Java操作LDAP(轻量级目录访问协议)来与AD域进行交互的示例代码,目的是为了演示如何修改AD用户的密码以及如何新增AD账号。 首先,理解Java...
总的来说,理解如何在Java中使用JNDI免证书连接AD并修改密码是一项关键技能,尤其在处理企业级应用集成和自动化任务时。但是,安全始终是首要考虑,因此在实际应用中应尽可能使用安全的连接方式。
这个主题涉及几个关键知识点,包括Java LDAP API、SSL安全连接以及如何通过代码操作LDAP目录。 首先,LDAP是一个开放标准的协议,用于存储和检索用户、组、计算机等对象的数据。这些数据通常分布在多台服务器上,...
本案例将介绍如何使用Java编程语言操作LDAP服务器,实现用户登录验证等功能。 首先,我们需要了解Java中的JNDI(Java Naming and Directory Interface)框架,它是Java提供的一套标准API,用于与各种命名和目录服务...