Duvida sobre JAAS

Boa tarde pessoal!

Seguinte. Estou criando um sistema CRUD usando JAAS, JBoss e JSF. E o estranho é … quando eu crio um link para um página “protegida” pelo JAAS usando a tag commandLink do JSF, o navegador direciona diretamente para a página mesmo eu não estando logado como administrador nem nada. Tipo o JAAS nem fez a autenticação. Já quando uso o link comum <a href… ele manda pra autenticação. A pergunta é … o JAAS se comporta assim mesmo, ou tem alguma coisa errada?

Obrigado!

<h:commandLink action="/pages/protected/admin/admin.xhtml" value="Para administrador" />
<a href="/agendaPro/pages/protected/admin/admin.xhtml">Para administrador link comum</a>

[quote=kira911]Boa tarde pessoal!

Seguinte. Estou criando um sistema CRUD usando JAAS, JBoss e JSF. E o estranho é … quando eu crio um link para um página “protegida” pelo JAAS usando a tag commandLink do JSF, o navegador direciona diretamente para a página mesmo eu não estando logado como administrador nem nada. Tipo o JAAS nem fez a autenticação. Já quando uso o link comum <a href… ele manda pra autenticação. A pergunta é … o JAAS se comporta assim mesmo, ou tem alguma coisa errada?

Obrigado!

<h:commandLink action="/pages/protected/admin/admin.xhtml" value="Para administrador" /> <a href="/agendaPro/pages/protected/admin/admin.xhtml">Para administrador link comum</a> [/quote]O commandLink usa post. Por isso que você consegue entrar na página inicial. Tente navegar para outra página e você vai ver que ele te manda para a tela de login.

O que você pode fazer é no commandLink chamar um redirect. Ou então você pode utilizar o outputLink (eu acho).

[quote=jakefrog][quote=kira911]Boa tarde pessoal!

Seguinte. Estou criando um sistema CRUD usando JAAS, JBoss e JSF. E o estranho é … quando eu crio um link para um página “protegida” pelo JAAS usando a tag commandLink do JSF, o navegador direciona diretamente para a página mesmo eu não estando logado como administrador nem nada. Tipo o JAAS nem fez a autenticação. Já quando uso o link comum <a href… ele manda pra autenticação. A pergunta é … o JAAS se comporta assim mesmo, ou tem alguma coisa errada?

Obrigado!

<h:commandLink action="/pages/protected/admin/admin.xhtml" value="Para administrador" /> <a href="/agendaPro/pages/protected/admin/admin.xhtml">Para administrador link comum</a> [/quote]O commandLink usa post. Por isso que você consegue entrar na página inicial. Tente navegar para outra página e você vai ver que ele te manda para a tela de login.

O que você pode fazer é no commandLink chamar um redirect. Ou então você pode utilizar o outputLink (eu acho).[/quote]

Grande Jakefrog!!

Mas cara, só pelo fato do commandLink usar post ele consegue “burlar” o JAAS???

Ele não burla, repare no seu browser que a URL fica sendo a url anterior e não a URL nova.

Ele não atualiza a URL do browser por isso que o JAAS não trava. [=

Agora caso você tente ir direto para a URL aí sim o JAAS entra de avuadora. [=

A soh entendi!

Velhinho mais uma vez muito obrigado.

Vou dar uma pesquisada nesse redirect!

Só para avisar, com o redirect ficou perfeito!

Obrigado!

[quote=kira911]Só para avisar, com o redirect ficou perfeito!

Obrigado![/quote]\o/

Como diriam lá em minas… BAAAAAAAAAAAAAAUUUM!

Coloca o código aí para caso alguém procure depois veja o resultado. [=

Opa ta na mão! E quanto à qualquer má prática do JSF nessa página me desculpem, estou começando agora =)

Mas já que o código está aí, me diz ai jakefrog. Tem alguma coisa errada aí nessa pequena página? Algo que eu deveria mudar para fazer uso de uma melhor prática quanto ao JSF?

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:composite="http://java.sun.com/jsf/composite">
      
      <head>
      	<title>Gerenciador de Contatos :: Home</title>
      </head>
      
      <h:body>
      	Bem vindo ao gerenciador de contatos!<br />
      	<h:form>
      		<h:commandLink action="/pages/public/login.xhtml" value="Fazer Login" />
      		<br />
			<h:commandLink action="/pages/protected/admin/admin.xhtml?faces-redirect=true" value="Para administrador" />
      		<br />
      		<h:commandLink action="/pages/protected/user/user.xhtml?faces-redirect=true" value="Para usuario" />
      		<br />
      		<h:commandLink action="#{loginMB.logout}" value="Logout" />
      	</h:form>
      </h:body>
      
</html>

Troca de para <h:head>

[quote=kira911]
Mas cara, só pelo fato do commandLink usar post ele consegue “burlar” o JAAS??? [/quote]
Primeiramente, que bom que o problema foi resolvido :slight_smile:

Agora só para ficar claro: o acesso pelo commandLink não passou pelo fato de usar post, e sim pela mudança de página ser feita por forward.

Assim:

Você está na página A (que tem acesso permitido), e ela tem um commandLink para a página B (acesso não permitido).
Quando clica no link, é feito um post para a url da página A, e o acesso é autorizado. Somente durante o processamento da requisição - mais especificamente, depois de executar a Action do link e pegar seu retorno - é que ocorre o forward para a página B, internamente. Nesse ponto não existe uma nova validação, e a página B é renderizada com sucesso.

Com redirect isso não acontece, visto que o browser faz uma nova requisição diretamente para a página B.

[quote=gomesrod][quote=kira911]
Mas cara, só pelo fato do commandLink usar post ele consegue “burlar” o JAAS??? [/quote]
Primeiramente, que bom que o problema foi resolvido :slight_smile:

Agora só para ficar claro: o acesso pelo commandLink não passou pelo fato de usar post, e sim pela mudança de página ser feita por forward.

Assim:

Você está na página A (que tem acesso permitido), e ela tem um commandLink para a página B (acesso não permitido).
Quando clica no link, é feito um post para a url da página A, e o acesso é autorizado. Somente durante o processamento da requisição - mais especificamente, depois de executar a Action do link e pegar seu retorno - é que ocorre o forward para a página B, internamente. Nesse ponto não existe uma nova validação, e a página B é renderizada com sucesso.

Com redirect isso não acontece, visto que o browser faz uma nova requisição diretamente para a página B.[/quote]

Opa, clareou mais ainda. Muito obrigado!!!

E jakefrog, podexa que vou mudar isso parceiro!