복붙노트

[SCALA] w /를 unboundid LDAP의 SDK 스칼라에서 암호 변경하려고 할 때 어떻게 "WILL_NOT_PERFORM"MS의 AD 응답을 해결하는 방법은 무엇입니까?

SCALA

w /를 unboundid LDAP의 SDK 스칼라에서 암호 변경하려고 할 때 어떻게 "WILL_NOT_PERFORM"MS의 AD 응답을 해결하는 방법은 무엇입니까?

나는 그것이 나에게 암호를 변경할 수 있습니다려고, 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())
}

}

그래서, 런타임 오류로 얻을 :

와 6dd1627e @ [B로 설정 암호 시도가는 : ModifyRequest (DN = 개조 = 'CN = 테스터 야가, OU는 연구소, OU = 조직, OU = 제공자, DC = 예, DC = 그물을 ='{를 unicodePwd 교체} )

실패한 LDAP 예외 : LDAP 예외 (= 53의 resultCode (내키지 수행) ERRORMESSAGE = '0000001F : SvcErr : DSID-031A11E5, 5003 문제 (WILL_NOT_PERFORM), 데이터 0 'diagnosticMessage ='0000001F : SvcErr : DSID-031A11E5, 5003 문제 (WILL_NOT_PERFORM), 데이터 0 ')

나는이 오류가 발생할 수 있습니다 알고있는 것들 사이에 이렇게 :

나는과 암호의 주위에 여분의 따옴표없이 모두를 시도했습니다.

했다 thusfar 정보의 가장 유용한 소스 :

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

하지만이 모든 제안 (그리고 다른 많은 장소) 소진했습니다.

또한 수동으로 추가 된 다른 유효한 사용자의 암호를 설정을 포함하여 여러 가지 다른 일을 시도했습니다. (이것은 또한 SDK를 통해 첨가 하였다.)

다른 작업은 잘 작동하고 있습니다. 나는 관련이없는 코드를 제거했지만 나는, 검색 속성을 인쇄, 추가 및 문제없이 사용자를 삭제 할 수 있었다; 그러나이 수정 요청이 실패합니다. 또한 벌금을 작동, 같은 연결된 이메일 같은 다른 속성을 변경하려면 ModifyRequest를 설정합니다.

해결법

  1. ==============================

    1.인용 : http://support.microsoft.com/kb/269190

    인용 : http://support.microsoft.com/kb/269190

    그래서 모든 다른 모습은 바로, 당신은 여전히 ​​SvcErr를받을 수 있습니다 경우에도 : DSID-03190F4C, 문제 5003 (WILL_NOT_PERFORM를) 연결이 안전하지 않은 것으로 간주됩니다.

    당신이 부족 권한이없는 대신 수행하려고 할 경우 수정 요청이 실패 할 수 있습니다.

    dn: CN=johndoe,OU=Users,DC=example,DC=com
    changetype: modify
    replace: unicodePwd
    unicodePwd:: base64(utf16le(quoted(password)))
    -
    

    이 경우에 DSID-03150E47, 문제 (4003) (INSUFF_ACCESS_RIGHTS) : 당신은 SecErr을 얻을 것이다. 당신은 권한이없는 계정으로 결합하려고하면이 문제가 발생합니다.

    일부 관리자가 긴 암호 역사를 가지고 싶어 (예를 들어 지난 24 암호 저장). 당신은 역사에 이미 오래된 비밀번호를 사용하는 경우는 CONSTRAINT_ATT_TYPE을 얻을 것이다.

    EG

    dn: CN=johndoe,OU=Users,DC=example,DC=com
    changetype: modify
    delete: unicodePwd
    unicodePwd:: base64(utf16le(quoted(old password)))
    -
    add: unicodePwd
    unicodePwd:: base64(utf16le(quoted(new password)))
    -
    
  2. ==============================

    2.그것은 부호화하고 base64로 변환 UTF-16LE되어야한다는 나온다.

    그것은 부호화하고 base64로 변환 UTF-16LE되어야한다는 나온다.

    val newPass = javax.xml.bind.DatatypeConverter.printBase64Binary(('"'+"Jfi8ZH8#k"+'"').getBytes("UTF-16LE"))
    

    트릭을했다.

  3. ==============================

    3.내 생각이다 "를 unicodePwd :"+ ' "'+ newpass로 + '"'(문자열 다시 바이트로 변환되어야하고 나는 그것이 올바른 인코딩을 사용하지 않는 내기로) 인코딩을 우회한다.

    내 생각이다 "를 unicodePwd :"+ ' "'+ newpass로 + '"'(문자열 다시 바이트로 변환되어야하고 나는 그것이 올바른 인코딩을 사용하지 않는 내기로) 인코딩을 우회한다.

    객체 수정을 소요하고 바이트와 같은 속성 값을받는 생성자를 사용 MofifyRequest의 버전을 사용하십시오.

    val newPass = "\"Jfi8ZH8#k\"".getBytes("UTF-16LE")
    // note the dquotes inside the string
    
    val mod = new Modification(ModificationType.REPLACE, "unicodePwd", newPass)
    

    단지 블로그 게시물처럼 당신이에 연결 ...

  4. from https://stackoverflow.com/questions/6797955/how-do-i-resolve-will-not-perform-ms-ad-reply-when-trying-to-change-password-i by cc-by-sa and MIT license