Golang utf16le 编码 LDAP 密码属性



我正在尝试在Go中使用ldap重置MS Active Directory密码属性。AD 不能很好地与ldap.PasswordModifyRequest配合,所以我正在使用 ldap.NewModifyRequest .(使用 gopkg.in/ldap.v2)

AD将接受用引号括起来的密码和utf16le编码,在Python中,我可以这样做

unicode_pass = unicode(""secret"", "iso-8859-1")
password_value = unicode_pass.encode("utf-16-le")
mod_attrs = [(ldap.MOD_REPLACE, "unicodePwd", [password_value])]
l.modify_s(user_dn, mod_attrs)

如何在 Go 中执行此操作?使用 ldap.NewModifyRequestReplace我可以更改其他属性,但我需要为更新的值传递Request []string,这需要是我的编码密码,并且在我玩弄utf16.Encode时遇到类型不匹配......

modify := ldap.NewModifyRequest(dn)
modify.Replace("unicodePwd", []string{"encodedsecret"})

谢谢。

您可以使用

golang.org/x/text/encoding/unicode 包将字符串编码为 UTF16。

使用此包,您可以编写如下内容:

utf16 := unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM)
encoded, err := utf16.NewEncoder().String("encodedsecret")
modify := ldap.NewModifyRequest(dn)
modify.Replace("unicodePwd", []string{encoded})
// do something with modify

最新更新