Gastaldi's Blog

Mais um blog sobre Java …

Acessando o HttpServletRequest no LoginModule (JAAS)

Alguma vez você já precisou acessar um objeto HttpServletRequest dentro de um LoginModule no JAAS ? Para quem não conhecia (isso me inclui !), é necessário utilizar a API JACC (Java Authorization Contract for Containers) :


import javax.security.jacc.PolicyContext;
import javax.security.jacc.PolicyContextException;

   /** The JACC PolicyContext key for the current Subject */
   public static final String WEB_REQUEST_KEY = "javax.servlet.http.HttpServletRequest";

   HttpServletRequest request = (HttpServletRequest) PolicyContext.getContext(WEB_REQUEST_KEY);

Ah ! Essa dica vale para o Glassfish e o JBoss (os servidores de aplicação que testei até então) !

Link: http://www.jboss.org/community/docs/DOC-9048

About these ads

5 Respostas para “Acessando o HttpServletRequest no LoginModule (JAAS)

  1. Christiano Carrilho 29 de novembro de 2012 às 8:05

    Olá amigo,
    Esta dica valeu muito!
    Estou enfrentando um outro problema que gostaria de tirar essa dúvida.
    Quando estou utilizando um ambiente segura (SSL), não estou conseguindo recuperar o request pelo PolicyContext.getContext(WEB_REQUEST_KEY); Ele vem nulo. Se rodo a aplicação sem estar no https, consigo recuperar. Este comando estou utilizando dentro de um realm customizado. Preciso do request para anexar nele as mensagens de erro durante o processo do login. Está faltando alguma coisa quando o ambiente é seguro?
    Desde já muito obrigado!

    • gastaldi 29 de novembro de 2012 às 8:11

      Olá Christiano !

      Que bom que tenha gostado. Em relação ao HTTP/S acho estranho isso não funcionar. Talvez seja outra chave, mas não cheguei a testar. Que servidor de aplicação você está usando ?

      • Christiano Carrilho 29 de novembro de 2012 às 8:22

        Estou utilizando o glassfish 3.1.2.2.
        Pois é, quando crio no web.xml uma restrição para todas as URL’s, configurando o user-data-constraint para CONFIDENTIAL, ao entrar na aplicação vai para o login, e dentro do realm que eu implementei para o glassfish, o request vem nulo. Utilizo para segurança o JAAS, implementando o LoginModule (estendendo AppservPasswordLoginModule) e Realm (estendendo o AppservRealm).
        Muito obrigado pela atenção.

    • Lucas 27 de janeiro de 2014 às 9:32

      Estou com o mesmo problema quando uso HTTPS, como conseguio resolver.

      Obrigado

  2. Glauco 14 de outubro de 2013 às 14:08

    Boa demais essa dica!
    Já sofri pra conseguir fazer isso.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

%d blogueiros gostam disto: