有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案