Série da semana: eXtreme Programming na prática

Veja mais
Menu de vídeos

1. Introdução

Aprenda a programar um mecanismo de autorização para controlar o acesso às funcionalidades de seus web services RESTful, tornando-os mais seguros e preparados para os diferentes tipos de usuário. Para isso, adotaremos recursos da API JAX-RS e do Jersey.

05:55 min

Documentação

Neste curso vamos falar sobre autorização, mais precisamente, autorização em web services RESTful. Anteriormente, no curso sobre autenticação em web services, vimos que a autenticação é o ato do usuário fornecer alguns dados, normalmente o nome do usuário e a senha, para ter acesso às funcionalidades da aplicação.

Caso as credenciais estejam corretas, isto é, sejam válidas, o usuário estará autenticado. No entanto, isso não significa que ele terá autorização para acessar todas as funcionalidades.

O que é autorização? Explicando a autorização? Em que consiste a autorização E se tiver permissão? E se não tiver permissão? Tá esperando o quê?

Para gerenciar o acesso a essas funcionalidades, é comum a definição de permissões, papéis ou, como também são chamadas as regras para estabelecer esse controle, as roles.

Em grande parte das aplicações, normalmente temos o papel do cliente, do funcionário da empresa e também do administrador, e cada um desses papéis possuirá acesso a um determinado conjunto de funcionalidades.

É para saber como prover esse controle de acesso às funcionalidades que precisamos aprender sobre autorização. Com ela, após o usuário estar autenticado, verificamos se ele tem permissão ou não para executar determinada função.

E então, vamos aprender a construir uma Web API com tal controle de acesso?

Ferramentas e tecnologias

Com o objetivo de aprender sobre autorização, vamos utilizar as mesmas ferramentas já indicadas em outros cursos: os frameworks Jersey e Hibernate, as ferramentas Maven e Postman, o container Web Tomcat, o SGBD MySQL e a IDE Intellij IDEA.

Pré-requisitos

Com relação aos pré-requisitos, é recomendado ter assistido a todos os cursos sobre web services RESTful publicados, principalmente o curso sobre autenticação com Basic Auth, pois vamos utilizar o projeto desenvolvido nesse último curso como ponto de partida. Além disso, também é indicado o curso que ensina como construir web services RESTful quando em nosso banco de dados há um relacionamento do tipo 1:N, pois vamos utilizar um cenário com esse tipo de relacionamento.

Conhecendo o exemplo

Para programarmos o mecanismo de autorização, vejamos o exemplo que será desenvolvido. Lembra da Web API para uma imobiliária que criamos no curso sobre autenticação? Vamos aprimorar esse exemplo para que a API forneça mais facilidade e opções de acesso a todos os usuários, sejam eles clientes da imobiliária, funcionários e, até mesmo, administradores.

Atualmente, a API permite que usuários não autenticados façam buscas pelos imóveis e que os usuários autenticados possam cadastrar, editar e remover um imóvel. O controle de autorização, neste momento, é mínimo. Qualquer usuário autenticado pode fazer tudo. Por esse motivo, apenas funcionários e administradores devem possuir cadastro no sistema.

A nova versão da API permitirá a qualquer usuário se cadastrar e, a partir disso, gerenciar seus dados de acesso, assim como cadastrar, editar e listar imóveis. Os funcionários poderão cadastrar e gerenciar os dados dos usuários, assim como cadastrar e gerenciar todos os imóveis. Já o administrador terá acesso a todas funcionalidades, inclusive as funcionalidades restritas a ele para exclusão de usuário e de imóvel.

Nota do Editor: Por que optamos pela Basic Authentication?

  • Falar sobre segurança sem precisar conhecer uma opção de autenticação avançada;
  • Explorar recursos para autenticação fornecidos pelo Jersey;
  • Formar uma base sólida sobre autenticação, de forma a ser reaproveitada nos próximos cursos.

No curso Primeiros passos para a segurança de web services RESTful em Java, os motivos dessa escolha estão mais bem documentados.

Sugestão de Conteúdo Prévio:

Baixar código fonte Baixar vídeo Ver Código Final
Avalie o curso
Suporte ao aluno - Deixe a sua dúvida.