Este é meu tema de trabalho de conclusão de curso da especialização em Projeto e Desenvolvimento de Sistemas Baseados em Objetos para Ambiente Internet pela Universidade Tecnológica Federal do Paraná (UTFPR). Tive como orientador o professor especialista Diego de Carvalho, do campus de Pato Branco.
Objetivo Geral
Propor uma estrutura para fornecer autenticação única com o protocolo OAuth na plataforma Java, e implementar duas mini-aplicações que utilizem esta estrutura de autenticação, sendo elas de plataformas de programação diferentes.
Conteúdo
O trabalho começa com uma pesquisa bibliográfica sobre diversos tópicos que abrangem o protocolo OAuth. Primeiramente sobre os conceitos de segurança de software, autenticação, autorização, cloud computing, o protocolo HTTP, protocolos similares (OpenID e CAS), e uma pesquisa aprofundada no protocolo OAuth, tendo como base principalmente sua especificação.
Tecnologias
Para o desenvolvimento das aplicações utilizadas no estudo de caso foram utilizadas as seguintes tecnologias:
- Spring MVC e Spring Security OAuth
- Hibernate
- Zend Framework
- Play Framework
- HTML5 e CSS3.
Implementação
Foi definido um servidor OAuth que fornece uma base de usuários e as funcionalidades de autorizar ou revogar o acesso de aplicações consumidoras. Foram implementados dois consumidores que utilizam este servidor para autenticação, um utilizando Zend Framework que é um sistema simples de cadastro de despesas e outro utilizando o Play Framework que é uma agenda de contatos. Os códigos dos três encontram-se na minha página do GitHub:
Trabalhos Futuros
- Adicionar os tokens gerados pelo framework Spring Security OAuth a um banco de dados, ao invés de uma fonte de dados volátil como a memória RAM. Isso pode ser implementado criando-se um novo serviço de tokens, que implemente a interface OAuthProviderTokenServices;
- Após implementar o serviço de tokens mencionado acima, implementar um serviço de consumidores, permitindo que um administrador de sistema cadastre novas aplicações que podem tentar consumir dados dos proprietários de recursos capazes de se autenticar no sistema. Para isso é necessário implementar um novo serviço de consumidores, que implemente a interface ConsumerDetailsService;
- Com estas duas melhorias implementadas, outro trabalho futuro é a capacidade de listar para o usuário as aplicações que o mesmo autorizou e, permitir que o mesmo possa revogar o acesso das aplicações cadastradas;
- Outra melhoria é, ao revogar o acesso de uma aplicação, a capacidade de limpar os dados do usuário armazenados nessa aplicação, permitindo que a base de dados não fique inconsistente já que o proprietário do recurso não autoriza mais que o consumidor utilize seus dados.
- Essas melhorias estão relacionadas à aplicação desenvolvida aqui, porém, quando a versão 2.0 do OAuth, que até esta data encontra-se em rascunho, se tornar uma especificação estável, uma melhoria importante é modificar a estrutura para utilizar esta versão.
O Trabalho
Confira abaixo o PDF contendo o trabalho completo:
Agradecimentos
A todos que contribuiram direta e indiretamente com este trabalho.