Pergunta

Fiquei um pouco intrigado com isso, pois não vi muitos exemplos que me deram a imagem completa. A melhor explicação que encontrei até agora é isto.

Ao definir uma função de segurança no web.xml como "admin", por exemplo, e ter meu formulário de login com todos os campos necessários (ou seja, j_security_check como ação e campos j_username, j_password), como/onde ocorre a autenticação real?

Planejo usar uma autenticação personalizada usando o nome de usuário/senhas (hashes) armazenado no banco de dados. Quando o usuário envia o formulário, como faço para fazer o contêiner Java EE Web invocar meu método Sevlet/Bean executa a autenticação real? Não notei nenhum lugar para adicionar um gancho ao meu código no web.xml que faria a autenticação real.

Foi útil?

Solução

Ao definir uma função de segurança no web.xml como "admin", por exemplo, e ter meu formulário de login com todos os campos necessários (ou seja, j_security_check como ação e campos j_username, j_password), como/onde ocorre a autenticação real?

Na implementação do servlet, o ServletContainer. Em Tomcat, por exemplo, é feito pelo AuthenticatorBase classe (código -fonte aqui).

Planejo usar uma autenticação personalizada usando o nome de usuário/senhas (hashes) armazenado no banco de dados. Quando o usuário envia o formulário, como faço para fazer o contêiner Java EE Web invocar meu método Sevlet/Bean executa a autenticação real? Não notei nenhum lugar para adicionar um gancho ao meu código no web.xml que faria a autenticação real.

Se você deseja continuar usando a autenticação gerenciada por contêineres, mas deseja verificar o login em um banco de dados, precisará configurar o chamado "Reino" de acordo. Não está claro qual servletContainer você está usando, mas, por exemplo, Tomcat, a documentação está disponível aqui: Tomcat 6.0 Realm como fazer.

Se você realmente deseja que seu próprio sistema de autenticação doméstico seja invocado, precisará abandonar a segurança gerenciada pelo contêiner e a agenda a casa ainda mais. Que não é recomendado.

Outras dicas

o real A autenticação está fazendo através de duas maneiras:

  1. Por meio de uma maneira proprietária do servidor, por exemplo, o *LoginModules Em Jboss, ou o Tomcat, um Balusc mencionou. Estes são diferentes para cada servidor.
  2. Via Jaspic, que foi introduzido em Java EE 6.

Jaspic praticamente padronizou os métodos proprietários, mas é uma API de nível bastante baixo e, infelizmente, disponível apenas para implementações Java EE 6 e 7 de perfil completo.

Ver Implementando a autenticação de contêiner em Java EE com Jaspic para mais detalhes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top