Я борюсь с Active Directory, пытаясь заставить его сменить пароль.Я нашел тонны полезной информации, но все еще получаю постоянную ошибку.
Некоторый код:
import com.unboundid.ldap.sdk._
import com.unboundid.util.ssl._
def main(args: Array[String]) : Unit = {
var sslUtil = new SSLUtil( new TrustAllTrustManager() )
var con = new LDAPConnection(sslUtil.createSSLSocketFactory())
con.connect("ldap.example.net", 636)
con.bind("ldapadmin", "adminpasswd")
val newPass = "Jfi8ZH8#k".getBytes("UTF-16LE");
val modRequest = new ModifyRequest("dn: cn=Tester Dude,ou=Lab,ou=Org,ou=Provider,DC=example,DC=net",
"changetype: modify",
"replace: unicodePwd",
"unicodePwd: " + '"' + newPass + '"')
println("\nGoing to try to set password to " + newPass + " with: " + modRequest.toString())
try {
con.modify(modRequest)
} catch {
case lde:LDAPException => println("failed LDAPException: " + lde.toString())
}
}
Итак, я получаю это как ошибку времени выполнения:
Попытка установить пароль для [B @ 6dd1627e с помощью: ModifyRequest (dn= 'cn = Тестер Dude, ou = Lab, ou = Org, ou = Provider, DC = пример, DC = net', моды = {REPLACE unicodePwd})
сбой LDAPException: LDAPException (resultCode = 53 (не желает выполнять), errorMessage = '0000001F: SvcErr: DSID-031A11E5, проблема 5003 (WILL_NOT_PERFORM), данные 0', диагностическое сообщение = '0000001F: SvcErr: DSID-031A11E5, проблема 5003 (WILL_NOT_PERFORM), данные 0)
Итак, среди известных мне вещей может возникнуть эта ошибка:
- Не подключается через SSL.(Дело не в этом, и я проверил, что на 100% уверен, что использую netstat на порту 636)
- Передача пароля, который нарушает политику паролей Active Directory.(Я проверил установку этого точного пароля вручную; он будет отклонять короткие / простые пароли, но он принимает тот, который я использую в этом коде)
Я пробовал как с, так и бездополнительные кавычки вокруг пароля.
Самый полезный источник информации, таким образом, был:
http://www.dirmgr.com/blog/2010/8/26/ldap-password-changes-in-active-directory.html
Но я исчерпал каждое предложение там (и многодругие места).
Я также пробовал несколько других вещей, включая установку пароля для другого действительного пользователя, который был добавлен вручную.(Этот был также добавлен через SDK.)
Другие операции работают нормально.Я удалил нерелевантный код, но смог найти, распечатать атрибуты, добавить и удалить пользователя без проблем;но этот запрос на изменение не выполняется.Если я настрою запрос ModifyRequest для изменения какого-либо другого атрибута, например связанного с электронной почтой, он также будет работать нормально.