Limitar tentativas de login

Bom dia pessoal,

Gostaria de sugestoes do grupo sobre como eu posso estar implementando um limite de tentativas de login em um sistema usando Java 1.4, Strtuts, LDAP e Tomcat 5.5? Ou seja, se por exemplo um usuario tentar logar 3 vezes no sistema sem sucesso, o seu usuario eh bloqueado.

Cookie, Re-escrita de URL, Campos Hidden, Criar uma política no LDAP para isso, etc…

sugestão 1: Utilize o HttpSession para acumular a quantidade de tentativas do usuário. Para garantir o funcionamento mesmo sem os cookies, utilize o recurso de reescrita de urls de HttpServletResponse no seu botão/link de login.

sugestão 2: Mantenha em ServletContext um contre de login_name x ip x tentativas x data_ultima_tentativa.

Só por curiosidade, como manter uma HttpSession se teoricamente antes do login o usuário não irá ter uma sessão criada?
Ou a sugestão é vincular a quantidade de tentativas ao jsessionid?

Uma HttpSession não começa no login do usuário.
Basta acessar qualquer recurso dinâmico da aplicação Java Web que vincule um objeto em HttpSession - pronto, a partir daí um id de sessão (jsessionid) é criado para o usuário, e devolvido por cookies ou por reescrita de url para o browser.

É isso aí.

Ola rbellia

Voce fala que posso iniciar uma sessao quando iniciar o browser ?
se for isso … entendi !
e posso tomar como ideia !
Voce tem mais detalhes para um iniciante ? se não incomodar rbellia !! é claro.

Valeu
Obrigado
t+

Não, não quando inicia o browser, mas a cada requisição feita ao seu AS.
Se a requisição não tiver um jsessionid vinculado a ela, será criado pelo container.
A idéia dele é a partir desse jsessionid vincular a quantidade de tentativas a ele.

Ps: Se estiverem usando o Active Directory, ele possui uma política desta já pronta.(Bem provável que o OpenLDAP ou algum outro também tenha)

[quote=Lindberg]Ola rbellia

Voce fala que posso iniciar uma sessao quando iniciar o browser ?
se for isso … entendi !
e posso tomar como ideia !
Voce tem mais detalhes para um iniciante ? se não incomodar rbellia !! é claro.

Valeu
Obrigado
t+
[/quote]

Por exemplo, faça o form de login com JSP.
Neste JSP faça a seguinte construção:

<% Integer c = (Integer) session.getAttribute("contadorLogin"); if (c == null) { session.setAttribute("contadorLogin", new Integer(0)); } else { if (c.intValue() > limiteTentativasLogin) { response.sendRedirect("hoje_naum_tem_passa_amanha.html"); } else { c = new Integer(c.intValue() + 1); session.setAttribute("contadorLogin", c); } } %>

Se não quiser fazer com JSP (por exemplo, seu form de login já está pronto em HTML) essa lógica tbém pode ser construída com ServletFilter.

Obrigado pela dica !!!

Gostei muito, facim de entender …

t+