2017-09-15 13 views
0

UnboundID LDAPSDK을 사용하고 Red Hat Directory Server에 연결하여 특정 암호가 거부 된 이유를 추출하려고합니다. 그러나, 다음과 같은 요청을 수행 한 후 :언 바운드 ID LDAPSDK를 통해 Red Hat Directory Server에서 암호 정책 위반 이유를 찾으십시오.

PasswordModifyExtendedRequest passwordModifyExtendedRequest = new PasswordModifyExtendedRequest(userDN, currPassword, newPassword, new Control[]{new Control("1.3.6.1.4.1.42.2.27.8.5.1")}); 
passwordModifyExtendedRequest.setResponseTimeoutMillis(1000); 
LDAPConnection ldapConnection = ldapManager.getLdapConnection(); 
PasswordModifyExtendedResult extendedResult = (PasswordModifyExtendedResult) ldapConnection.processExtendedOperation(passwordModifyExtendedRequest); 
System.out.println(extendedResult); 

을 나는 (충분히 설명하지 않은)에 대한 응답으로이 얻을 : 나는 Apache Directory Studio를 통해 암호를 변경할 때

PasswordModifyExtendedResult(resultCode=19 (constraint violation), messageID=2, diagnosticMessage='Failed to update password', responseControls={PasswordPolicyResponseControl(errorType='insufficient password quality', isCritical=false)}) 

그러나, 그것은 완벽하게 제공 미세한 오류 메시지 :

[LDAP: error code 19 - invalid password syntax - password must be at least 8 characters long] 

그냥 예를 들어,이 (물론 괜찮습니다) ApacheDS에 사용되는 다음을 반환합니다 :

[LDAP: error code 19 - CONSTRAINT_VIOLATION: failed for MessageType : MODIFY_REQUEST Message ID : 15  Modify Request   Object : 'cn=josef,ou=users,o=test'    Modification[0]     Operation : replace     Modification userPassword: 0x70 0x65 0x70 0x61 [email protected]6d9db6: Password should have a minimum of 5 characters] 

는 질문, 아파치 디렉터리 스튜디오 얻기 위해 관리하는 정보를 얻을 수있는 방법이 있나요? codebase을 (를) 통해 검색을 시도했지만 찾을 수 없습니다.

즉, 의 비밀번호는 최소한 8 자 이상이어야합니다. 응답은입니다. 일반 ModifyRequest 등을 이용하여 솔루션을 발견

답변

0

다음 :

LDAPException(resultCode=19 (constraint violation), errorMessage='invalid password syntax - password must contain at least 1 uppercase characters', diagnosticMessage='invalid password syntax - password must contain at least 1 uppercase characters', ldapSDKVersion=4.0.1, revision='26090') 
: 이것은 다음과 같은 예외가 발생

// ... 
import com.unboundid.util.Base64; 
// ... 
Modification passwordReplacementModification = new Modification(
     ModificationType.REPLACE, "userPassword", 
     newPassword.getBytes()); 
ModifyRequest modifyRequest = new ModifyRequest(
     user.getDn(), passwordReplacementModification); 
LDAPResult modifyResult = ldapManager.getLdapConnectionAsAdmin().modify(modifyRequest);