Dúvida metodos de autenticação JAAS

Fala galera!

Pessoal, estou criando um sisteminha usando JAAS, JSF, Facelets e JBoss. Já consegui criar um login de boa.
O único problema é que só consigo logar normalmente quando tento acessar uma página protegida pelo JAAS.
Caso eu tente me logar sem necessariamente acessar uma página protegida da o seguinte erro:
“Invalid direct reference to form login page”

O que eu quero é que o usuário possa logar a qualquer momento e não somente quando for acessar uma página protegida.
Alguma idéia de como faço isso?

OBS: No meu web.xml o “auth-method” ta como FORM.

Thanks in advance.

O uso JAAS é justamente para prover autenticação em diretórios e recursos em que a autenticação é exigida.

Acredito que não seja viável usar uma form de autenticação para um diretorio ou arquivo não protegido.

O uso de JASS já controla e apresenta o form de login apenas em diretórios em que a autenticação se faz necessária, seja por REALM JDBC/JAAS,etc.

Existe mesmo a necessidade de se autenticar em um diretório ou arquivo que não exige proteção ?

Olá!

Não é bem isso…o que quero é que o usuário tenha a opção de se autenticar a qualquer momento. Sem necessariamente clicar em uma página protegida entendes. Tipo … o usuário se autentica agora, mas fica “passeando” por páginas não protegidas, ai quando o usuário clicar em uma página protegida ele tenha acesso a ela normalmente, devido a autenticação que ja foi feita. O que quero é isso, que o usuário se autentique a qualquer momento sem ter que clicar em página protegida para isso.

Sim, entendo.

O form de autenticação em JAAS é apresentado apenas quando um diretório protegido é requisitado. Se você tentar acessar o login.jsp diretamente, provavelmente irá receber a mensagem que informou aqui antes, pois o JAAS não saberá lhe informar para qual diretório protegido você está tentando acessar Invalid direct reference to form login page;

Basicamente o fluxo seria: abre a aplicação - acessa o diretorio /admin (protegido) - JAAS apresenta o form de login - autentica - entre em admin - volta para user (diretorio nao protegido) - volta para admin (diretorio protegido) sem a necessidade de novo login , pois os seus dados de login ficam autenticados até que a sua sessão na aplicação expire.

Além do JAAS / JDBC REALM existe o Spring Security - caso queira experimentar possa ser útil para o seu caso !

Farei isso!

Me corrijam se eu estiver errado por favor.

O JAAS é uma especificação de autenticação e autorização. O JDBC, Realm, Spring Security implementam essa especificação.
Estou certo?

Ninguém sabe me dizer isso que perguntei no post acima? :frowning:

up =P

Fala kira911,

Estou utilizando o JAAS também, mas estou com a mesma dúvida, como autenticar o usuário a qualquer hora e não somente quando ele seleciona uma página protegida.

Você conseguiu resolver isto?

Abraço!

Veja o método “login” no request (Servlet 3.0).

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#login(java.lang.String, java.lang.String)

Cara, dei uma olhada mas não entendi como isso me ajudaria.

Estou utilizando JAAS com JSF.

Tem algum exemplo?

Obrigado.

[quote=rcafalchio]Cara, dei uma olhada mas não entendi como isso me ajudaria.

Estou utilizando JAAS com JSF.

Tem algum exemplo?

Obrigado.[/quote]
Opa velho, de boa?
Então cara, tentei e tentei mas não consegui.
Me aconselharam mudar para o spring security pra fazer isso, mas o jaas já estava implementado na minha aplicação eu deixei assim mesmo. Mas na proxima usarei o spring security pra ver como é.

De dentro do teu managedbean vc…

Pega a instância do facesContext
http://docs.oracle.com/javaee/6/api/javax/faces/context/FacesContext.html#getCurrentInstance()

Dessa instância vc pega o externalContext
http://docs.oracle.com/javaee/6/api/javax/faces/context/FacesContext.html#getExternalContext()

E do externalContext vc pega o request
http://docs.oracle.com/javaee/6/api/javax/faces/context/ExternalContext.html#getRequest()

Depois que vc tiver o request, é só fazer o login…

req.login("meuUsuario", "minhaSenha");