Java 在ActiveDirectory中更新unicodepwd

Java 在ActiveDirectory中更新unicodepwd,java,active-directory,ldap,Java,Active Directory,Ldap,我正在尝试更新WindowsAD中的unicodePwd属性。我正在使用ldaps://server:636 以创建InitialContext。连接很好,我可以搜索记录。我还可以更新givenName属性,因此我认为与服务器之间没有任何通信问题 我正在使用密码进行以下编码: javax.xml.bind.DatatypeConverter.printBase64Binary(““+”T3stPassw0rd“+”).getBytes(“UTF-16LE”) 当我尝试更新unicodePwd时,

我正在尝试更新WindowsAD中的unicodePwd属性。我正在使用ldaps://server:636 以创建InitialContext。连接很好,我可以搜索记录。我还可以更新givenName属性,因此我认为与服务器之间没有任何通信问题

我正在使用密码进行以下编码: javax.xml.bind.DatatypeConverter.printBase64Binary(““+”T3stPassw0rd“+”).getBytes(“UTF-16LE”)

当我尝试更新unicodePwd时,我得到以下错误 javax.naming.OperationNotSupportedException:[LDAP:错误代码53-0000001F:SvcErr:DSID-031A120C,问题5003(将不执行),数据0 ];

在查找类似问题时,我了解到,如果连接不是ldaps(我的是ldaps,我可以搜索和更新另一个属性),或者如果编码不正确,则可能发生这种情况。我正在使用建议的编码,但似乎无法使代码正常工作

谢谢你在这方面的帮助


谢谢

我们有一个已知有效的例子:


您有此权限吗?是的,我有。事实上,我可以为同一个用户更新另一个字段。谢谢,我已经用这个例子进行了处理。但我不明白的是,当我自己编码时,为什么它不起作用。当我使用ldif文件修改ldap时,这个密码起作用,但不是来自API。必须用双引号括起“明文”密码。那么整个字符串(带双引号)必须是UTF-16。