
Eu li uma boa quantidade de informações sobre LDAP, mas há algo que não entendo.
Suponhamos que eu tenha um aplicativo J2EE capaz de autenticar usuários locais ou usuários LDAP (alternativas mutuamente exclusivas). Depois de especificar o endereço IP do servidor LDAP, DN base e DN de conexão e senha no aplicativo, agora meus usuários podem fazer login usando suas informações LDAP.
Agora, suponha que "myuser" com senha "mypassword" faça login no aplicativo. O que ocorre a seguir?
O aplicativo recebe a solicitação de login, liga-se ao LDAP usando suas próprias credenciais e, em seguida, procura a entrada para "myuser" e compara "mypassword" com a senha armazenada no diretório LDAP para a entrada correspondente e, em seguida, permite ou rejeita o acesso.
O app recebe a solicitação de login, depois passa as credenciais "myuser" e "mypassword" para o LDAP (bind DN e senha) e então, dependendo da resposta recebida para a operação de vinculação, permite ou rejeita o usuário?
Como isso realmente funciona?
Responder1
Pelo que entendi (e não sou especialista nesses assuntos), é mais parecido com 1 do que com 2, mas não exatamente assim. O aplicativo recebe a solicitação de login. Ele se liga ao LDAP usando suas próprias credenciais, sendo a senha transmitida de forma clara (é por isso que o LDAPS, ou LDAP que escala via TLS, é uma boa ideia). Essas credenciais devem ser suficientemente privilegiadas para que o servidor LDAP permita uma pesquisa por vários parâmetros armazenados relacionados à myuser
conta do, incluindo a senha do usuário armazenada com hash.
O aplicativo então faz o hash mypassword
, conforme apresentado pelo usuário, e o compara com o hash retornado do LDAP. Se corresponderem, ele sabe que as credenciais apresentadas são boas e myuser está autenticado; se não, então não.