Как разрешить ответ MS AD «WILL_NOT_PERFORM» при попытке изменить пароль в scala с несвязанным LDAP SDK?

Я борюсь с 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 = Tester Dude, ou = Lab, ou = Org, ou = Provider, DC = example, DC = net ', mods = {REPLACE unicodePwd})

сбой LDAPException: LDAPException (resultCode = 53 (не желает выполнять), errorMessage =' 0000001F: SvcErr: DSID-031A11E5 , проблема 5003 (WILL_NOT_PERFORM), данные 0 ', DiagnosticMessage =' 0000001F: SvcErr: DSID-031A11E5, проблема 5003 (WILL_NOT_PERFORM), данные 0 ')

Я знаю, что причиной этой ошибки может быть:

  1. Отсутствие подключения через SSL. (Здесь не тот случай, и я проверил, что на 100% уверен, что использую порт 636 с помощью netstat)
  2. Передача пароля, который нарушает политику паролей Active Directory. (Я тестировал установку этого точного пароля вручную; он отклоняет короткие / простые пароли, но принимает тот, который я использую в этом коде)

Я пробовал как с дополнительными кавычками вокруг пароля, так и без них .

Самым полезным источником информации до сих пор был:

http://www.dirmgr.com/blog/2010/8/26/ldap-password-changes-in-active-directory.html

Но я исчерпал все предложения там (и во многих других местах).

Я также пробовал несколько других вещей, включая установку пароля для другого действительного пользователя, который был добавлен вручную. (Этот также был добавлен через SDK.)

Другие операции работают нормально. Я удалил ненужный код, но смог без проблем искать, печатать атрибуты, добавлять и удалять пользователя; но этот запрос на изменение не выполняется. Если я настрою ModifyRequest на изменение какого-либо другого атрибута, например связанного адреса электронной почты, это также будет работать нормально.

5
задан huynhjl 23 July 2011 в 04:06
поделиться