我正在尝试使用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
答案 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。您可能需要在创建后执行此操作。