SEGURANÇA NO DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK SPRING SECURITY Guilherme Baiestero Lopes1, Késsia R. C. Marchi1 ¹Universidade Paranaense (Unipar) Paranavaí – PR – Brasil [email protected], [email protected] Resumo. Este artigo apresenta um investigação cientifica sobre a tecnologia emergente para desenvolvimento de softwares para a web. É abordado nessa pesquisa, a estrutura, as funcionalidades e os recursos que a framework Spring Security possibilita fornecer e o resultado que ele proporcionou no desenvolvimento de um aplicação, utilizando a ferramenta Java JSF (Java Server Faces) que foi utilizada em uma implementação de um sistema de gerenciamento de confecções. 1. Introdução Com o aumento da demanda de tecnologia, algumas ferramentas vem se destacando na área de desenvolvimento de software. A linguagem Java vem tendo um grande destaque no meio dos programados que possibilita o desenvolvedor trabalhar em alto e baixo nível. No mundo de TI, segurança é uma palavra que tem que ser levada em conta com um nível alto de relevância. Isso significa tantas coisas diferentes em tantos diferentes contextos, que por fim, deve ser levado sobre uma proteção de recursos sensíveis e valiosos contra o uso malicioso. [Scarioni 2013] A ferramenta Spring Security, possibilita que a autenticação fique forte e altamente personalizável e ainda estabelece uma estrutura de controle de acesso que é o padrão de facto para a proteção de aplicativos baseados na framework Spring. [Chhatpar 2006] Com o aumento da produção de software os problemas são frequentes, a framework Spring possibilita solucionar inúmeros problemas comuns presentes no desenvolvimento J2EE e Java JEE. O objetivo dessa ferramenta é lembrar de fazer a coisa certa na programação orientada a objetos: projetar aplicações usando interfaces. [Chhatpar 2006] Este trabalho tem como objetivo descrever um pesquisa científica sobre a framework Spring, fazendo uma abordagem sobre Spring Security que tem um reconhecimento enorme entre os programadores quando o assunto é segurança. No artigo apresenta os resultados que foram adquiridos no desenvolvimento utilizando à ferramenta. 2. Apresentação da Framework Atualmente mantido pela empresa Interface21, o Spring é uma framework que traz diversos benefícios as aplicações, aumentando a produtividade no desenvolvimento de aplicações além de promover um grande aumento de performance em tempo de runtime e facilitar o trabalho com testes unitários. [Schittini 2011] O Spring Framework é composto por recursos organizados em cerca de 20 módulos, tais módulos podem ser implementados separadamente ou em conjunto com outros, isto permite ao Spring ser aplicado nos mais variados tipos de aplicações, sendo estas de qualquer porte. [Calçado 2008; Johson 2011] Dentro da Spring existem vários projetos que auxiliam no desenvolvimento. O Spring Security é um dos projetos mais maduros e amplamente utilizado. Fundado pela SpringSource em 003 ele é usado para garantir inúmeros ambientes exigentes, como: agências governamentais, aplicações militares e bancos centrais. Para que o usuário possa usá-lo com confiança em seus projetos a Apache 2.0 libera a licença. [Winch 2012] Diferente de muitas essa ferramenta é fácil de aprender, implementar e gerenciar. O namespace fornece diretrizes para operações e permite que com apenas algumas linhas de XML a segurança do aplicativo esteja completo. [Winch 2012] 3. Estrutura da Framework A estrutura é dedicada a fornecer um pacote completo de serviços de segurança para aplicações Java em uma maneira desenvolvedor amigável e flexível. A figura 1 mostra a estrutura de código para a implementação. Figura 1: Estrutura da framework [Brunetta 2011] Com o aumento de softwares que são desenvolvidos para web, as preocupações com o sistemas são maiores, para garantir uma melhor segurança contra ataques maliciosos. Com a implementação da Spring Security nesse projeto, o software vai estabelecer um nível maior de segurança possibilitando assim mais tranquilidade aos usuário. 4. Utilizacão no Projeto Em uma empresa existe vários funcionários, cada empregado tem suas funções e permissões. Para que o usuário tenha acesso somente ao que é permitido e preciso de um nível de acesso. O objetivo da implementação desse método na aplicação é estabelecer quais os níveis de cada usuário. Para que ele tenha acesso é necessário digitar o usuário e a senha, para cada usuário existe o seu nível de acesso, se ele vai poder realizar vendas, visualizar relatórios, visualizar fluxo de caixa, todas essas operações vão depender do seu nível de acesso. A figura 2 está mostrando a entidade Roles, que define qual ou quais permissões o usuário possui na utilização do software. Figura 2 Implementando Spring Security [Francisco 2013] Como todo framework necessita de uma configuração para o funcionamento, utilizando a Spring Security também não e diferente. Na figura 3 está definindo que qualquer pagina dentro da pasta pages, só poderá ser acessada se existir algum usuário logado e que dentro das pastas user e admin, o usuário precisará ter permissões especiais, no caso na pasta user, o usuário precisará possuir a permissão ROLE_USER e pasta a admin o usuário precisará possuir a permissão ROLE_ADMIN. Está também define uma página de erro, caso o usuário não tenha permissão para acessar aquela pagina. Caso contrário não esteja logado e tente acessar alguma pagina, ele será redirecionado para a página de login. Também define que a classe responsável pela autenticação será a Authenticator. Figure 3 Configuração Spring Security [Francisco 2013] 5. Metodologia Para elaboração deste trabalho, foram feitas pesquisas em livros e estudos em artigos literários, ambos como base no conteúdo sobre framework Spring Security. Procurando mostrar sua contribuição no desenvolvimento de software. 6. Conclusão A utilização de frameworks em projetos de desenvolvimento de softwares se torna uma pratica bastante utilizada. O Spring é uma framework com um potencial indiscutível, e sua aplicação em projetos fornece uma maior segurança, aumentando a qualidade do software. Pode-se concluir que o desenvolvimento de software, em Java, utilizando-se da framework Spring Security torna-se o sistema mais seguro e com qualidade, proporcionando mais tranquilidade ao usuário. 7. Referencias Brunetta, Andrii (2011). Java EE 6: Segurança com Spring Security 3.0.5.Disponivel em:<http://javasemcafe.blogspot.com.br/2011/05/java-ee-6-seguranca-com-springsecurity.html> Acesso em: 01 de Agosto 2013 Calçado, P. (2008) “Curso Spring Framework”. Disponível em: <http://blog.flexdev.com.br/wp-content/uploads/spring/apostila-spring.pdf> acesso em 14 de Agosto 2013. Chhatpar, Arun (2006). Apache Geronimo e o Spring Framework, Parte 1: Metodologia de Desenvolvimento. Disponível em <http://www.ibm.com/developerworks/br/library/os-ag-springframe1/authors.html> Acesso em: 31 Julho 2013. Francisco, Gabriel (2013) “Utilizando o Spring Security 3”. Disponível em<http://wehavescience.com/2013/01/19/utilizando-o-spring-security-3/ > acesso em: 02 de Agosto 2013 Johson, R. et Al (2011) “Spring Reference”. <http://static.springsource.org/spring/docs/3.1.x/spring-frameworkreference/htmlsingle/spring-framework-reference.html > acesso em: 01 de Agosto de 2013. Scarioni, Carlo (2013) “Pro Spring Security”. Nova York, Estados Unidos. Disponível em: <http://books.google.com.br/books?id=VIqInfAXFaoC&printsec=frontcover&dq=sp ring+security&hl=ptBR&sa=X&ei=JNUMUtb2JIfk9gSo8oDIAQ&ved=0CD8Q6AEwAg#v=onepage&q =spring%20security&f=false> Acesso em: 14 de Agosto 2013. Schitini, I. et Al. (2011) “Spring Framework”. <Http://kenai.com/projects/possistemasjava-jf/sources/pos-java-ufjf-2009-2011/content/02 Daves/SpringFramework.doc?rev=48> Acesso em: 30 Julho 2013. Winch Robert, Mularien Peter (2012) “Spring Security 3.1” Disponível em <http://www.springsource.org/spring-security> Acesso em: 13 de Agosto de 2013.