JDBC Realm com filtro de usuários bloqueados

2 respostas
TiagoW

Olá,

Estou utilizando um JDBC Realm, no servidor Glassfish v2, para gerenciar o login na minha aplicação web.
Tenho uma tabela usuario(login, senha) e usuarioRole(login, role).
Até ai tudo bem, estabeleço o relacionamento entre as duas na configuração do realm, configuro o método de encriptação da senha e tudo funciona bem.

O problema, é que minha tabela Usuário também possui um campo chamado “BLOQUEADO char(1) default ‘N’”.
Quando um usuário é bloqueado pelo administrador do sistema, o campo bloqueado é setado para ‘S’, e no login, o Realm não deve permitir o login de um usuário bloqueado.

O problema é que não encontrei nenhuma forma de informar ao JDBC Realm que filtre a lista de usuários pelo campo Bloqueado. Algo como uma propriedade para incluir uma clausula WHERE, na query que o JDBC realm executa seria ideal.

Alguem sabe se existe alguma “Additional Property” para configurar isso, ou se há alguma outra forma de contornar esse problema?

Agradeço.

2 Respostas

P

Provavelmente você vai precisar sobrescrever a estrutura LoginModule do teu servidor, de forma que você valide essa propriedade antes de logar o usuário. Parece complicado mas não é, fiz isso de forma semelhante no JBoss.
Inclusive é provável que o Glassfish já te dê várias opções de login modules pré-implementados. Ex LoginModuleLendoProperties, LoginModuleLDAP, LoginModuleJDBC… etc.

TiagoW

Olá, obrigado.
Acabei fazendo mesmo a implementação do LoginModule a partir da classe padrão do J2EE. Infelizmente não encontrei nenhum LoginModule “pre-configurado” no glassfish que já fornecesse algumas features adicionais, como por exemplo adicionar parâmetros. Talvez haja algo na documentação do GF a esse respeito, mas como prazos são prazos, a gente acaba indo pelo lado que conhece e deixa a documentação para depois não é? :wink:

De qualquer forma, obrigado.

Criado 16 de setembro de 2009
Ultima resposta 21 de set. de 2009
Respostas 2
Participantes 2