[RESOLVIDO]JAAS não protegendo minhas pastas

9 respostas
silver00

Pessoal, estou tentando implementar JAAS na minha aplicação segundo esse tuto [url]http://uaihebert.com/?p=56#comment-1458[/url].

Porém quando eu tento fazer acesso as páginas que deveriam estar bloqueadas, consigo acessá-las normalmente.

Ainda não implementei a parte do Banco, porém apenas fazendo as configurações no web.xml, deveria estar bloqueando correto?

Segue as classes. A estrutura de páginas esta identica ao do tutorial, o qual achei bem interessante e estou usando em minha aplicação.

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name>CertificadoDigital</display-name>
  <context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
  </context-param>
  <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  </listener>
  <welcome-file-list>
    <welcome-file>/index.html</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
    <url-pattern>*.faces</url-pattern>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  
  <!-- Protected Areas -->
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Only admins</web-resource-name>
            <url-pattern>/pages/protected/admin/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>ADMIN</role-name>
        </auth-constraint>
    </security-constraint>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Users and admins</web-resource-name>
            <url-pattern>/pages/protected/user/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>ADMIN</role-name>
            <role-name>USER</role-name>
        </auth-constraint>
    </security-constraint>
 
    <!-- Validation By Form -->
    <login-config>
        <auth-method>FORM</auth-method>
        <form-login-config>
            <form-login-page>/pages/protected/public/login.xhtml</form-login-page>
            <form-error-page>/pages/protected/public/mensagens/loginError.xhtml</form-error-page>
        </form-login-config>
    </login-config>
 
    <!-- Allowed Roles -->
    <security-role>
        <role-name>ADMIN</role-name>
    </security-role>
    <security-role>
        <role-name>USER</role-name>
    </security-role>
 
    <!-- Filter to get the user name and work with it -->
    <filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>br.com.certificadosdigitais.filter.LoginFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/pages/protected/*</url-pattern>
    </filter-mapping>    
</web-app>

Algo de errado?

9 Respostas

Hebert_Coelho

Muito bom esse site hein?! :lol: :lol: :lol:

Em qual diretório estão as páginas?

Hebert_Coelho

Outra coisa, isso aqui tá muito errado: /pages/protected/public/login.xhtml

silver00

Mas a página de login não ficaria em uma pasta pública para poder se fazer acesso?

sergiotaborda

Ha uam confusão ai ente os URL publicos e os URL das pastas do projeto. Os URL que vc configura são os publicos. Ou seja, os que o browser vai enviar e não as pastas do projeto.

O url começando com pages dá a entender que vc está tentando bloquear as pastas do projeto, quando vc deveria travar era as URLs.

Hebert_Coelho

/pages/protected/public/login.xhtml

Hebert_Coelho

/pages/protected/public/login.xhtmlOlha lá no tutorial a diferença…

silver00

Hebert Coelho:
Muito bom esse site hein?! :lol: :lol: :lol:

Em qual diretório estão as páginas?

As páginas públicas estavam dentro da pasta protected, como vc tinha mencionado em outro comentário. Mas já arrumei esta parte. As pastas do meu projeto estão exatamente iguais aos do seu tutorial.

WebContent>pages>protected>admin>admin.xhtml
--------------------------------------->user—>user.xhtml
-------------------------->public>mensagens>loginError.xhtml
-------------------------->public>login.xhtml

O web.xml esta exatamente do jeito que postei acima. Mas mesmo assim, ainda tenho acesso a estas pastas.

silver00

Consegui arrumar o problema, porém surgiu um outro: HTTP Status 408 - The time allowed for the login process has been exceeded. IF you wish to continue you must either clock back twice and re-click the link you requested or close and re-open your browser. Porém acho melhor abrir outro post.

Giovani_Figueiredo

Hebert Coelho:
Muito bom esse site hein?! :lol: :lol: :lol:

Em qual diretório estão as páginas?

Aproveitando o tópico… Eu também fiz um implementação do jaas em uma aplicação através do seu tutorial Hebert, só que eu to com uma dúvida e queria ver se pode me ajudar…

Logo de cara quando o usuário digitar a url da aplicação eu já quero jogar ele pra pagina de login, sendo assim, eu coloquei um bloqueio na minha <welcome-file> que fará o sistema chamar a pagina de login!

O problema: Quando eu digito a URL completa, o sistema faz como deve fazer, porém, quando eu coloco apenas http://localhost/MinhaAplicacao/ ele não direciona pra tela de login! Como posso resolver isso?

Criado 20 de dezembro de 2012
Ultima resposta 6 de set. de 2015
Respostas 9
Participantes 4