Validação de Usuário e request.getRemoteUser()

Olá!!!

Estou desenvolvendo uma aplicação que autentica o usuário através de uma caixa de diálogo do Apache. Com php funciona perfeitamente mas com jsp não consigo recuperar o login e a senha do usuário, tentei sem sucesso o método request.getRemoteUser() mas ele só retorna null assim como o método request.getUserPrincipal.
Alguém sabe como devo proceder para conseguir recuperar tais valores ?? O request.getRemoteUser() serve para isso mesmo ??

Agradeço desde já!

Olá colega,

Seguinte, a especificação das tecnologias servlet/JSP possuem recursos próprios de autenticação, no Tomcat, estes são conhecimos como “Realms”. Se você procurar pela documentação do servidor, você encontrará um HOW-TO explicado como utilzá-lo.

Este é um recurso muito flexível, você pode fazer com que o container faça validação contra uma base de dados ou um diretório LDAP por exemplo.

A forma de utilização deste recurso não é complexa, mas é bastante conteúdo a ser absorvido. Aconselho você a dar uma olhada em
http://jakarta.apache.org/tomcat

Ps: Mesmo que você não utilize o tomcat, o conceito de “Realms” explicado lá faz parte da especificação JSP/Servlet, logo, qualquer servidor compliant com estas especificações possui os mesmos recursos.

Espero ter ajudado!

Abraços!

Olá!!!

Todo o sistema de autenticação já está implementado utilizando o módulo pam do apache-tomcat, a única coisa que eu preciso fazer é conseguir pegar o nome do usuário digitado na tela de autenticação.

Mesmo assim, obrigado

Não sei como você faz para buscar o usuário em PHP mas o apache tem uma série de variáveis de ambiente, AUTH_USER para o login e AUTH_PASSWORD para a senha. Retornando estas variáveis de ambiente você pode conseguir o que deseja.

Embora em minha humilde opinião, não ache que uma autenticação via PAM seja a melhor solução para uma aplicação web baseada em um container JSP/Servlets.

Olá!!!

O PHP tem uma variável de ambiente que acessa a variável de ambiente do Apache que contém o nome do usuário. Preciso encontrar uma forma de fazer isso usando JSP.

Agora, gostaria de saber o porquê da sua humilde opinião sobre a autenticação via PAM. Qual seria a autenticação mais vantajosa ???

Até

o getRemoteUser tem o seguinte problema, que esta na documentacao:

"Whether the user name is sent with each subsequent request depends on the browser and type of authentication. "

isto eh, na primeira servlet/jsp que for acessada apos a autenticacao, ele SEMPRE funciona. mas da segunda vez, dependendo do protocolo de autenticacao, nao vai funcionar, vai dar null, mesmo autenticado!

entao, coloque a autenticacao na SESSION, logo apos de validado.

Olá!!!

Obrigado pela dica, mas isso ainda não resolve o meu problema pois nem na primeira requisição ele consegue pegar o login do usuário.

Alguém tem mais alguma dica ou sugestão ??

Agradeço todos que ajudarem.

Olá Jsp_dev,

A respeito do porque da minha opinião:

Antes de mais nada, deixo claro que não vejo “problemas” em usar autenticação via PAM, apenas acho que não seria a melhor alternativa ao se utilizar JSP/Servlets, mas isto de uma maneira GERAL, se no seu caso você roda aplicações PHP que se utilizam do mesmo esquema de autenticação, então a princípio não há porque ter mudanças.

Acontece que a especificação JSP/Servlets dispoe de muitos recursos voltados para segurança de aplicações, desde simples validações usuário/senha até verificação de assinaturas digitais (criptografia). E a API mostra-se prática e simples quando lidando com estes recursos.

Para citar um exemplo: supondo que você tenha uma aplicação que autentica contra uma base de dados de usuários, é possível você passar para um diretório LDAP sem fazer alterações no código fonte.

Agora, como disse antes, é uma questão de ver qual solução se adapta melhor à sua situação e necessidade.

Na verdade isto seria assunto para um artigo inteiro. Se quiser trocar umas idéias, envie uma mensagem privada, estamos ai :slight_smile:

Abraços!

Acho que vamos precisar de mais informações! Mande parte do código da servlet, mostre como esta a configuração de autenticação no tomcat/apache, etc…