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

时间:2017-06-08 06:03:33

标签: java active-directory ldap jndi

我正在尝试使用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 配置。

ErrorCode 53和WILL_NOT_PERFORM

1 个答案:

答案 0 :(得分:1)

AFIK,这必须是因为您正在设置Microsoft Active Directory中不存在的“userPassword”属性(默认情况下)。

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

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

此外,对于Microsoft Active Directory,您MUST use SSL-TLS更改unicodePwd。

您可以(但不建议)尝试在没有unicodePwd的已创建用户条目上设置属性userAccountControl = 544。您可能需要在创建后执行此操作。