Ir para o conteúdo

Provider Java - Filtros

O projeto autoriza-java-provider-filtro possui um servlet filter para interceptar métodos e verificar se o usuário possui o perfil ou transação configurados, nas políticas de acesso ao sistema, para acesso ao recurso.

Com o filtro, é possível utilizar as políticas de acesso da aplicação cadastradas no Autoriza sem a necessidade da chamada direta aos métodos do provider java básico.

Configuração

O projeto de filtro não precisa de variáveis de ambiente além daquelas já definidas para o provider java básico.

Utilização

Importação no pom.xml:

<dependency>
  <groupId>br.gov.serpro.autoriza</groupId>
  <artifactId>autoriza-java-provider-filtro</artifactId>
  <version>1.0.0-SNAPSHOT</version>
</dependency>

Para usar o filtro, é necessário declará-lo no web.xml da sua aplicação conforme o exemplo:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
  version="3.0">
   <display-name>Servlet Application Example</display-name>
   <filter>
      <filter-name>FiltroAutoriza</filter-name>
      <filter-class>br.gov.serpro.autoriza.filtro.FiltroAutoriza</filter-class>
   </filter>
   <filter-mapping>
      <filter-name>FiltroAutoriza</filter-name>
      <url-pattern>/private/*</url-pattern>
   </filter-mapping>
</web-app>

Atentar para o pattern que deseja utilizar, para que o filtro fique restrito a determinado path de conteúdo da sua aplicação.

Adicionalmente, é preciso definir uma classe que implemente a interface DadosUsuarioFiltroResolver, e defina os métodos:

  /**
   * Retorna o id do usuário logado (CPF)
   * 
   * @param servletRequest Dados do request do usuário
   * 
   * @return CPF do usuário logado
   */
  String getIdUsuarioLogado(HttpServletRequest servletRequest);

  /**
   * Retorna o token de acesso do Acesso gov.br para o usuário
   * 
   * @param servletRequest Dados do request do usuário
   * 
   * @return Token de acesso do acesso gov para o usuário
   */
  String getTokenAcessoGov(HttpServletRequest servletRequest);

Essa realização da interface deve ser utilizada na classe de configuração de injeção de dependências do provider, de um modo similar a:

  @Override 
  protected void configure() {
    bind(DadosUsuarioFiltroResolver.class).to(DadosUsuarioFiltroResolverImpl.class);
    bind(CacheAutoriza.class).to(CacheAutorizaPadrao.class);
    bind(FachadaAutoriza.class).to(FachadaAutorizaRest.class);
    bind(PontoAdministracaoPoliticas.class).to(PontoAdministracaoPoliticasServico.class);
    bind(PontoInformacaoPoliticas.class).to(PontoInformacaoPoliticasPadrao.class);
    bind(PontoDecisaoPoliticas.class).to(PontoDecisaoPoliticasPadrao.class);
    bind(PontoExecucaoPoliticas.class).to(PontoExecucaoPoliticasPadrao.class);
  }

O filtro retorna uma exceção ExcecaoAcessoNaoAutorizado no caso do usuário não possuir acesso ao recurso.