无法在java中设置unciodepwd

问题描述 投票:0回答:1

Windows Server 2016 上的广告 我们想使用java更新密码 更新密码:

try {

            String dn = "CN=adminad,OU=NewUser";

            String pwd1 = "1QAZ,2wsx";

            ModificationItem[] mods = new ModificationItem[1];

            Attribute attr0 = new BasicAttribute("unicodePwd", mkPwd(pwd1));

            mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attr0);

            ldapTemplate.modifyAttributes(dn, mods);

            Thread.sleep(500);

        } catch (Exception e) {

            e.printStackTrace();

        }

为了制作 pwd,我们使用了函数 mkPwd 的代码:

     String pwd1 = "\"" + password + "\"";

            return pwd1.getBytes("UTF-16LE");`

还使用了函数 mkPwd 的代码:

 String quotedPassword = "\"" + pwd + "\"";

            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);

            }

            return pwdArray;

全部返回错误:

[LDAP:错误代码 53 - 0000001F:SvcErr:DSID-031A126A,问题 5003 (WILL_NOT_PERFORM),数据 0

那么如何在java中更新广告密码,谢谢。

那么如何在java中更新广告密码

directory ldap
1个回答
0
投票

您必须满足以下要求

  • 安全性:Active Directory 需要安全通信(基于 SSL/TLS 的 LDAP)来修改密码等敏感属性。
  • 编码:密码以特定格式(UnicodePwd)存储,在发送之前需要进行编码。
  • 权限:Java 应用程序需要足够的权限才能修改 Active Directory 中的用户对象。
© www.soinside.com 2019 - 2024. All rights reserved.