如何使用java在ldap中创建和启用用户?

如何使用java在ldap中创建和启用用户?,java,active-directory,ldap,jndi,Java,Active Directory,Ldap,Jndi,我正在尝试使用java在ldap中创建一个用户,但是用户正在创建,但它被禁用,如何在创建用户时启用它,发布我用于创建的代码。是否有任何参数丢失或设置错误的属性或密码设置错误?帮帮我 Attribute userCn = new BasicAttribute("cn", commonName); Attribute samAccountName = new BasicAttribute("samAccountName",samaccountname);

我正在尝试使用java在ldap中创建一个用户,但是用户正在创建,但它被禁用,如何在创建用户时启用它,发布我用于创建的代码。是否有任何参数丢失或设置错误的属性或密码设置错误?帮帮我

        Attribute userCn = new BasicAttribute("cn", commonName);
        Attribute samAccountName = new BasicAttribute("samAccountName",samaccountname);
        Attribute userPassword = new BasicAttribute("userPassword",Password);
        Attribute oc = new BasicAttribute("objectClass");
            oc.add("top");
            oc.add("person");
            oc.add("organizationalPerson");
            oc.add("user");
        Attributes entry = new BasicAttributes(true);
        entry.put(userCn);
        entry.put(samAccountName);
        entry.put(oc);
        entry.put(userPassword);
String entryDN = "CN=" + userID.trim() + ",OU=abc,OU=def,DC=ghi,DC=jkl";
dirContext.createSubcontext(entryDN, entry);
更新1

我在更新或修改用户以设置用户密码并启用密码时遇到以下异常/错误,并且我正在使用ldap服务器和我的环境之间的私有连接,因此我是否需要使用SSL/TLS配置


错误代码53并且将不执行AFIK,这一定是因为您正在设置Microsoft Active Directory中不存在的“userPassword”属性(默认情况下)

unicodePwd是Microsoft Active Directory中的密码属性,需要从JNDI设置“特殊”编码。我们在此展示一个示例

因此,默认情况下,在Microsoft Active Directory中创建的没有密码的用户条目将被禁用

此外,对于Microsoft Active Directory,您还需要更改unicodePwd


您可以(但不推荐)尝试在创建的用户条目上设置属性=544,而不使用unicodePwd。您可能需要在创建后执行此操作

您使用的是哪种LDAP实现,模式中的哪个属性决定用户是否处于活动状态?对于LDAP实现-“需要创建活动用户”,我不知道使其处于活动状态的属性,这就是为什么发布问题的原因。我对实现的意思是什么“品牌”、active Directory、OpenLdap或其他。什么告诉您用户已禁用?您使用的是特定的客户端吗?我使用的是Active Directory,通过打开microsoft的ldap浏览器并点击用户属性,我了解到它已被禁用,并且我没有使用任何特定的客户端,只是使用java JNDI。如果您使用的是Active Directory和java JNDI,那么您的问题与此无关。我尝试了您的代码,但它仍然有效正在给我错误代码53和“WILL_NOT_PERFORM”异常。即使创建了一个带有
unicodePwd
的用户,它似乎仍然存在disabled@rajatravigarg14你有适当的权限吗?您正在使用TLS吗?@PhilippGrigoryev尝试使用与代码中相同的用户在MMC中更改帐户,然后登录?这行得通吗?我实际上认为,这需要两个步骤:首先创建一个用户,然后设置密码和userAccountControl。谢谢各位