LDAP 인증은 어떻게 작동하나요?

LDAP 인증은 어떻게 작동하나요?

LDAP에 관한 꽤 많은 정보를 읽었지만 이해가 안되는 부분이 있습니다.

로컬 사용자 또는 LDAP 사용자(상호 배타적 대안)를 모두 인증할 수 있는 J2EE 앱이 있다고 가정해 보겠습니다. 앱에서 LDAP 서버 IP 주소, 기본 DN, 연결 DN 및 비밀번호를 지정하면 이제 사용자가 LDAP 정보를 사용하여 로그인할 수 있습니다.

이제 비밀번호가 "mypassword"인 "myuser"가 애플리케이션에 로그인한다고 가정합니다. 다음 중 어떤 일이 발생합니까?

  1. 앱은 로그인 요청을 수신한 다음 자체 자격 증명을 사용하여 LDAP에 바인딩한 다음 "myuser"에 대한 항목을 조회하고 "mypassword"와 일치하는 항목에 대해 LDAP 디렉터리에 저장된 비밀번호를 비교한 다음 허용하거나 거부합니다. 입장.

  2. 앱은 로그인 요청을 수신한 다음 "myuser" 및 "mypassword" 자격 증명을 LDAP(바인딩 DN 및 비밀번호)에 전달한 다음 바인딩 작업에 대해 수신된 응답에 따라 사용자를 허용하거나 거부합니까?

실제로 어떻게 작동하나요?

답변1

내가 이해하는 바에 따르면(그리고 나는 이 문제에 대한 전문가는 아닙니다) 2보다는 1에 더 가깝지만 꼭 그렇지는 않습니다. 앱이 로그인 요청을 받습니다. 자체 자격 증명을 사용하여 LDAP에 바인딩하고 비밀번호는 명확하게 전송됩니다(이것이 TLS를 통해 확대되는 LDAPS 또는 LDAP가 좋은 이유입니다). 이러한 자격 증명은 myuser저장된 해시된 사용자 비밀번호를 포함하여 의 계정 과 관련하여 저장된 다양한 매개변수에 대한 검색을 허용하려면 LDAP 서버에 대해 충분한 권한이 있어야 합니다 .

그런 다음 앱은 mypassword사용자가 제시한 대로 해시하고 이를 LDAP에서 반환된 해시와 비교합니다. 일치하면 제시된 자격 증명이 양호하고 myuser가 인증되었음을 알게 됩니다. 그렇지 않다면 그렇지 않습니다.

관련 정보