Configurar JAAS com banco de dados no JBoss 7 (Parte 2)


Vamos para a segunda parte do tutorial.

Quem ainda não viu a primeira parte acesse aqui.

Nossa aplicação vai ter duas roles, a role de admin que poderá acessar as páginas de admin, as roles de user que poderá acessar as páginas de user.

Então vamos criar no WebContent duas pastas:

WebContent

admin

users

Dentro da pasta admin crie uma página JSP chamada adminPage.jsp, com um conteúdo qualquer.

Dentro da pasta users crie uma página JSP chamada usersPage.jsp com um conteúdo qualquer.

Crie uma página index.jsp dentro da pasta WebContent com um conteúdo qualquer.

Essas são as páginas onde nós vamos adicionar segurança, a página adminPage.jsp só usuários com a role admin irá poder acessar, e assim sucessivamente. A página index.jsp usuários não logados poderão acessar.

Com as páginas criadas vamos criar a nossa página de login.

Dentro do diretório WebContent crie uma página chamada login.jsp e digite o seguinte conteúdo.

O action do form j_security_check nada mais é do que uma Servlet que será encarregada da autenticação, e os atributos j_username e j_password são usados para realizar a autenticação.

Com a página de login criada, vamos criar a página de erro, para caso seja informado usuário ou senha inválido, dentro do diretório WebContent crie uma página error.jsp com um conteúdo qualquer.

Seu projeto terá mais ou menos essa “cara” nesse momento:

Agora nós vamos criar um arquivo jboss-web.xml no diretório WEB-INF, esse arquivo é responsável por informar o security domain configurado no standalone.xml.

Digite o seguinte código no jboss-web.xml:

Agora vamos configurar o arquivo web.xml para configurar quais páginas irão participar do processo de autenticação.
Insira os seguintes códigos abaixo para informar quantas roles nossa aplicação irá usar:

Agora vamos informar as nossas páginas de login e error

Agora nós informar as páginas que irão participar do processo de autenticação

No nosso exemplo nós configuramos que a página de admin apenas usuários com a role admin terão acesso, e as páginas dentro do diretório users apenas usuários com a role user terão acesso.

Seu web.xml ficará parecido com isso

<?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_3_0.xsd" id="WebApp_ID" version="3.0">
 <display-name>TesteJaas</display-name>
 <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 <security-constraint>
     <web-resource-collection>
     <web-resource-name>Acesso Restrito</web-resource-name>
     <url-pattern>/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>Acesso Restrito</web-resource-name>
               <url-pattern>/users/*</url-pattern>
           </web-resource-collection>
           <auth-constraint>
                <role-name>user</role-name>
           </auth-constraint>
       </security-constraint>
 <login-config>
       <auth-method>FORM</auth-method>
       <form-login-config>
       <form-login-page>/login.jsp</form-login-page>
       <form-error-page>/error.jsp</form-error-page>
       </form-login-config>
 </login-config>
 <security-role>
       <role-name>user</role-name>
 </security-role>
 <security-role>
       <role-name>admin</role-name>
 </security-role>
</web-app>

Pronto sua aplicação está configurada.

Para testar basta tentar acessar a página adminPage.jsp e usersPage.jsp que você será redirecionado para a página de login, e só conseguirá acessar após informar usuário e senha.

Baixe a aplicação aqui .

Até o próximo post.

6 ideias sobre “Configurar JAAS com banco de dados no JBoss 7 (Parte 2)

  1. Juliano

    Juliano :
    Bom dia Bruno,
    Como eu faço para controlar acesso por página. Por exemplo, dentro da pasta crediário tenho duas páginas, uma é para consulta e outra para liberação de credito, como eu poderia dar acesso a pagina liberacao.jsp para o usuario X e o Y não ter acesso fazendo com que o usuario Y tenha acesso somente a consulta.Isso é possível?

    Bruno, basicamente seria o controle de privilégio a rotinas.

    Responder
    1. brunorota Autor do post

      Bom dia Juliano

      Juliano, nos projetos que eu já trabalhei nós fazemos esse tipo de validação em código mesmo, caso o perfil do usuário tenha acesso apenas a consulta, nós mostramos pra ele apenas consulta, caso tenha acesso a mais funcionalidades, nós mostramos as funcionalidades que ele tem acesso, acredito que deve ser a unica maneira de fazer esse tipo de validação.

      Com EJB você consegue colocar previlegios em métodos, por ex, esse método apenas o usuário com perfil X pode acessar, mas na pratica nunca usei, é mais comum você renderizar na tela apenas o que o usuário pode acessar.

      Espero que tenha ajudado

      Abraços

      Responder
  2. Charles Ferreira

    Bom dia, Muito bom esse post, seria melhor ainda se disponibilizasse outro link para fazer o download da aplicação, pois o link que foi disponibilizado esta inválido, ou seja, não baixa mais a aplicação.

    Desde já agradeço e aguardo respostas.

    Responder

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *