ldap密码属性的Golang utf16le编码

我正在尝试在 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.NewModifyRequestandReplace我可以更改其他属性,但我需要传递Request []string更新的值,这需要是我的编码密码,并且当我玩弄时遇到类型不匹配utf16.Encode...


modify := ldap.NewModifyRequest(dn)

modify.Replace("unicodePwd", []string{"encodedsecret"})

谢谢。


呼啦一阵风
浏览 389回答 1
1回答

ABOUTYOU

您可以使用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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go