2015-01-15 6 views
1

인증에 OpenLDAP 비밀번호 정책을 사용하려고합니다. 암호가 만료 된 경우 OpenLDAP는 만료 된 비밀번호에 대한 경고 만 반환합니다.

dn: cn=passwordDefault,ou=Policies,dc=company,dc=com 
objectClass: pwdPolicy 
objectClass: person 
objectClass: top 
cn: passwordDefault 
sn: passwordDefault 
pwdAttribute: userPassword 
pwdCheckQuality: 0 
pwdMinAge: 0 
pwdMaxAge: 7776000 
pwdMinLength: 8 
pwdInHistory: 5 
pwdMaxFailure: 5 
pwdFailureCountInterval: 600 
pwdLockout: TRUE 
pwdLockoutDuration: 0 
pwdAllowUserChange: TRUE 
pwdExpireWarning: 604800 
pwdGraceAuthNLimit: 0 
pwdMustChange: FALSE 
pwdSafeModify: FALSE 

난 단지 다시 경고를 얻을 수있는 정책을 테스트 할 때 :

나는 다음 내 ppolicy을 설정 한

try { 
     bindResult = bind(ldapConnection, userDN, userPassword); 
    } catch (LDAPException le) { 
     bindResult = new BindResult(le.toLDAPResult()); 
    } 
    DraftBeheraLDAPPasswordPolicy10ResponseControl pwpResponse = DraftBeheraLDAPPasswordPolicy10ResponseControl.get(bindResult); 
DraftBeheraLDAPPasswordPolicy10WarningType warningType = pwpResponse.getWarningType(); 

경고 유형이 널이 아닌 유일한 시간은 암호가 잠긴 경우입니다.

5 번의 시도가 실패한 후 계정이 잠길 때 ldap은 "잘못된 자격 증명"을 반환하지만 사실이 아닙니다.

어떻게 인증에 실패했는지 올바른 이유는 무엇입니까?

감사합니다.

답변

2

예외가 발생해도 응답 컨트롤을 사용할 수 있습니다. 나는 Spring-LDAP에서 그 모습을 모르지만 LdapContext.getResponseControls()을 통해 JNDI에서 해냈다. 응답 제어에는 잠금 상태가 포함되어야합니다.

그러나 이것에 대해주의해야합니다. 계정이 잠겨 있음을 사용자에게 알리고 싶지는 않습니다. prima facie 보안 위반이 될 수 있습니다. 계정이 있다는 것을 침입자에게 알려주고, 즉각적인 시도가 성공하지 못하게되며, 두 가지 모두 그의 작업에서 도움이됩니다.