2017-02-13 9 views
1


    내 응용 프로그램에서 LDAP 바인드 인증 메커니즘을 사용하고 있습니다. 아무도 일치하지 않는 경우에도 AuthenticationException이 발생합니다 (사용자 이름 또는 암호).
    사용자 이름이 불일치하거나 암호가 일치하지 않습니다.라는 오류 메시지를 표시하려고합니다. 현재는 AuthenticationException을 사용하여 적절한 세부 정보를 가져올 수 없습니다.LDAP/AD - 사용자 이름 또는 암호가 일치하지 않는지 확인하는 방법

기존 API가 도움이 될까요? 또는 API를 사용하여 쿼리해야합니까?

미리 감사드립니다.

답변

0

사용자가 인증을 위해 사용자 이름과 암호를 제공하는 경우 로그온 실패 이유를 정확하게 알려주지 않는 것이 좋습니다. 항상 사용자 이름과 암호가 일치하지 않는다고 말하면 공격자는 특정 사용자 이름이 존재 하는지를 알지 못합니다.

+0

UI에서 어느 것이 틀린 지 표시하지는 않지만 코드는 사용자 이름 또는 암호 중 어느 것이 일치하지 않는지 이해해야합니다. –

0

나는 그 이유를 밝히지 않는 것이 가장 좋습니다.

는 사용자 이름이 존재하는지 확인하기 위해 사용자 이름과 search를 수행

하지만 당신은 무슨 일이 있어도 그것을하지해야하는 경우 -

. 존재하지 않으면 오류입니다.

사용자가 있고 인증을 계속하지만 인증 오류가 발생하면 잘못된 암호입니다.

-

편집 :

If(checkUserExists(username)){ 
    //construct the hashtable environment 
    //... 
    ht.put(Context.SECURITY_PRINCIPAL, username); 
    ht.put(Context.SECURITY_PRINCIPAL, password); 
    //... 
    try { 
     localLdapContent = new InitialLdapContext(ht, null); 
    } catch (Exception e) { 
     //suppose it's a wrong password 
    } 
}else{ 
    //error user doesn't exist 
} 

당신은 모든 요청에 ​​대해 사용자를 확인 할 수있는 권한을 가진 다른 LDAP 연결이 필요합니다.

boolean checkUserExists(String username) { 
    //... 
    ht_administrator.put(Context.SECURITY_PRINCIPAL, admin_username); 
    ht_administrator.put(Context.SECURITY_PRINCIPAL, admin_password); 
    //... 
    adminconn = new InitialLdapContext(ht_administrator, null); 
    return adminconn.search(
     "uid="+username+",ou=people,dc=example,dc=com", "(objectclass=*)", searchControls 
    ).hasMore(); 
} 
+0

사용자 의견에 Java 코드를 공유 할 수 있습니까? –

+0

글로벌 컨텍스트가 없습니다. 그것은 비밀 번호 (손을 흔들어 LDAP 서버)를 제공하지 않고 사용자 ID가 존재하거나 존재하지 않는 쿼리하는 방법인가요? –

+0

검색을하기 위해 관리자의 사용자 이름과 암호로'new InitialLdapContext'를 간단하게 인스턴스화 할 수 있습니다. – cshu

0

Microsoft Active Directory의 returned error codes은 이러한 정보를 제공합니다.

"예외는 [LDAP : 오류 코드 49 - 80090308 : LdapErr : DSID-0Cxxxxxx, 주석 : AcceptSecurityContext 오류, 데이터, vece]입니다."

데이터 값은 문제를 알려줍니다.

+0

사용자 이름과 암호가 일치하지 않으면 "LDAP : 오류 코드 49 - 80090308 : LdapErr : DSID-0C090334, 주석 : AcceptSecurityContext 오류, 데이터 52e, vece "과 같은 오류 메시지가 나타납니다. " –

+0

거기에 사용자 ID를 쿼리하는 방법은 존재하지 않거나 비밀 번호 (손을 흔들어 LDAP 서버)를 제공하지 않고? –

관련 문제