Tuesday, August 14, 2012

Detalhes sobre contexto do Spring Security em aplicações Swing

O Spring security é sem dúvidas uma excelente alternativa para implementar módulos de autenticação e autorização em aplicativos Java Web e (por que não?) Swing.

Depois de autenticar o Spring Security mantém as credenciais do usuário em um contexto (na memória durante algum tempo). Dessa forma caso necessário podemos solicitar informações do usuário para o framework.

O componente SecurityContextHolder é responsável por esse trabalho. Por padrão ele está vinculado ao ThreadLocal, na web ele mantém os dados enquanto a requisição é processada.

Mas para aplicativos Swing, o uso do ThreadLocal não é a solução indicada, visto que componentes do framework trabalham com threads. Nesse caso devemos configurar o Spring Security para usar a estratégia de armazenamento global através de SecurityContextHolder.MODE_GLOBAL. No startup da aplicação, em um bloco static por exemplo, você pode definir essa forma de armazenamento:
static {
  SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_GLOBAL);
}

[]s
@edermag
http://www.yaw.com.br/