Autenticação com JSF e JAAS

2 respostas
rodrigo_ctba

Olá pessoal;

Estou com um problema e gostaria de compartilhar com o grupo. É o seguinte :

Hoje temos alguns projetos que utilizam uma autenticação via LoginModule (JAAS) no AD todos utilizando o JSF. Bom, tudo fucionando perfeitamente. No entanto, nesta semana me deparei com um certo problema:

Fui criar uma forma de “customizar” a autenticação, de que forma ? O programador pode criar um formulário e um ManageBean que recebe um “login” e “senha” e o mesmo faz a autenticação no LoginModule. Blz… até aí tudo certinho… mas nos testes realizandos acontece que … a autenticação é feita no JBoss, ou seja ele FAZ a autenticação no JBoss, mas quando retorna para a aplicação JSF o usuário não esta autenticado.

Como assim ??
Se eu utilizar, a implementação PADRÃO do JAAS com JSF e executar a seguinte linha:

FacesContext fc = FacesContext.getCurrentInstance();
		fc.getExternalContext().isUserInRole("logado");

… o resultado será TRUE, ou seja o usuário esta autenticado e tem a roles “logado”.

Com a “CustomImplementation”, executando a mesma linha:

FacesContext fc = FacesContext.getCurrentInstance();
		fc.getExternalContext().isUserInRole("logado");

… o resultado é FALSE ou seja o JSF não sabe que o usuário esta autenticado, MAS está.

No JAAS, tem o que chamamos de Subject que encapsula o objeto Principal e Roles. Utilizando a classe do JBoss,
SecurityAssociation, tem como forçar a mudança do Subject no JBOSS… Bom mas, não conheço como posso fazer
isso no JSF.

Via JSF, eu consigo verificar o objeto Principal desta forma:

FacesContext fc = FacesContext.getCurrentInstance();
		fc.getExternalContext().getUserPrincipal();

… mas como modificar o Principal do JSF ? E se eu manipular o objeto ExternalContext, até consegui fazer isso… mas não consigo setar este objeto no FacesContext.

Bom… esta situação é complexa…
qualquer idéia, sugestões, etc… serão bem-vindas !!!

Valeu !!!

2 Respostas

D

Estou com o mesmo problema, alguém da uma luz?

rodrigo_ctba

Olá colega…

chegou a resolver esta situação !?!?!?

t+

Criado 23 de outubro de 2009
Ultima resposta 5 de dez. de 2011
Respostas 2
Participantes 2