active directory无法在Java中更改AD服务器中的密码
我正在尝试编写代码来更改Active directory的密码。请在下面找到我的代码
try {
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
prop.put(Context.SECURITY_AUTHENTICATION, "simple");
prop.put(Context.SECURITY_PRINCIPAL,"sandeep.p");
prop.put(Context.SECURITY_CREDENTIALS,"Password@12");
prop.put(Context.PROVIDER_URL, "LDAP://10.141.144.5:389");
try {
LdapContext ctx1 =new InitialLdapContext(prop,null);
String uname="sandeep.p";
String oldPassword="Password@12";
String newPassword="Password@123";
String quotedPassword = "\"" + newPassword + "\"";
char unicodePwd[] = quotedPassword.toCharArray();
byte pwdArray[] = new byte[unicodePwd.length * 2];
for (int i=0; i<unicodePwd.length; i++) {
pwdArray[i*2 + 1] = (byte) (unicodePwd[i] >>> 8);
pwdArray[i*2 + 0] = (byte) (unicodePwd[i] & 0xff);
}
ModificationItem[] mods = new ModificationItem[1];
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE,
new BasicAttribute("UnicodePwd", pwdArray));
System.out.println("connects");
ctx1.modifyAttributes(uname, mods);
System.out.println("changed");
} catch (AuthenticationNotSupportedException ex) {
/* Wrong SECURITY_AUTHENTICATION, it may be none, simple or Strong*/
System.out.println("The authentication is not supported by the server "+ex);
} catch (AuthenticationException ex) {
System.out.println(" server "+ex);
} catch (NamingException ex) {
System.out.println("error when trying to create the context "+ex);
}
} catch (Exception e) {
System.out.println("Exception "+e);
}
我犯了这样的错误 尝试创建上下文时出错
javax.naming.InvalidNameException: sandeep.p: [LDAP: error code 34 - 0000208F: NameErr: DSID-031001BA, problem 2006 (BAD_NAME), data 8350, best match of: 'sandeep.p'
请说明哪里做错了
共 (0) 个答案