Quem trabalha com vários bancos de dados e linguagens de programação (especialmente o Java) visa trazer às suas soluções qualidade.
Hoje uma das soluções mais usadas é o Spring Security!
Como este é nosso primeiro projeto falando sobre esta solução, estaremos falando um pouco sobre ele e dando alguns exemplos!
Porque Usar O Spring Security?
Aplicações comerciais geralmente necessitam de uma segurança a mais!
O grande erro do mercado é um empresário que está começando ou já começou a exercer suas atividades e ao invés de investir em um profissional qualificado (geralmente por causa do preço que é um pouco mais elevado), investe naquele “sobrinho” que acabou de finalizar seu curso de Programação ou Design!
Por este motivo, existem milhares de aplicações com brechas de segurança e falhas grave que facilitam o acesso de pessoas com más intenções (exemplo: crackers).
O Spring Security serve exatamente para isso; dar a segurança necessária para sua aplicação!
Bem… como grande parte do código é escrito em Java, profissionais iniciantes poderão ter um pouco de dificuldade para assimilar!
Para evitar isso, preste bastante atenção no ficheiro “applicationContext.xml” (responsável pela conexão).
Criando A Base de Dados
Antes de qualquer coisa, precisaremos criar nossa base de dados; Para isso, abra seu gerenciador de base de dados e carregue o script a seguir:
Ele deverá criar a base de dados com nome “security” e a tabela “users”.
----- Criando a Base de Dados -----
create database security;
use security;
CREATE TABLE users(
username VARCHAR(15) NOT NULL,
password VARCHAR(40),
authority VARCHAR(15),
PRIMARY KEY (username)
);
Efetuando A Conexão JDBC
Após criar a base de dados, se você ainda não tiver instalado, baixe o driver JDBC (mais conhecido como Connector J 5.1) [4].
Esta aplicação lhe dará a possibiidade de conectar o Java ao MySQL usando o ODBC.
Adicionando Bibliotecas
Um dos softwares mais práticos no desenvolvimento de Projetos em Spring Security é o SpringSource Tool Suite [5]. Para elaborar seus Projetos e usar esta ferramenta, faça seu cadastro e baixe o aplicativo.
OBS.: Ao utilizar o sistema,não se esqueça de adicionar a biblioteca do JDBC e do MySQL à biblioteca do JAR do Spring Framework (conforme imagem e informações a seguir).
- Clique com o lado direito do mouse em cima do Projeto;
- Em Project Explorer selecione “Properties”;
- Em seguida, selecione “Java EE Module Dependencies”;
- Clique em “Add External Jars”, adicionando os arquivos a seguir:
- org.springframework.aop-3.0.2.RELEASE.jar
- org.springframework.asm-3.0.2.RELEASE.jar
- org.springframework.beans-3.0.2.RELEASE.jar
- org.springframework.context-3.0.2.RELEASE.jar
- org.springframework.core-3.0.2.RELEASE.jar
- org.springframework.expression-3.0.2.RELEASE.jar
- org.springframework.transaction-3.0.2.RELEASE.jar
- org.springframework.web-3.0.2.RELEASE.jar
- spring-security-config-3.0.2.RELEASE.jar
- spring-security-core-3.0.2.RELEASE.jar
- spring-security-taglibs-3.0.2.RELEASE.jar
- spring-security-web-3.0.2.RELEASE.jar
- commons-logging-1.1.1.jar
OBS.: Em relação ao ficheiro “commons-logging-1.1.1.jar”, como ele não faz parte do Spring Frameworks, você poderá baixar o ficheiro referente a esta biblioteca neste endereço da Apache [6].
Prático, não?
Bem… a configuração não é nosso foco principal (apesar de ser fundamental para o bom funcionamento de qualquer Projeto).
Exemplo Prático
Como nosso foco não é o de desmembrar um Projeto, vamos focar apenas o que se refere a conexão à base de dados.
Através do ficheiro a seguir, poderemos autenticar e autorizar o acesso do usuário à área segura (administração).
Não apenas isso; Ele possibilita nosso acesso às tabelas do MySQL (conforme exemplo a seguir).
applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<http auto-config="true" >
<form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=invalido"/>
<intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
</http>
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT username, password, 'true' as enable FROM users WHERE username=?"
authorities-by-username-query="SELECT username, authority FROM users WHERE username=?"
/>
</authentication-provider>
</authentication-manager>
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<beans:property name="url" value="jdbc:mysql://localhost:3306/security" />
<beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
<beans:property name="username" value="root" />
<beans:property name="password" value="123456" />
</beans:bean>
</beans:beans>
Criptografando A Senha
As senhas do ficheiro acima são inseridas manualmente (como você pode ver no ficheiro acima).
Caso seja necessário criptografá-las, você poderá adaptar seu script da seguinte forma:
<authentication-manager>
<authentication-provider>
<password-encoder hash="md5" />
…
</authentication-provider>
</authentication-manager>
Na hora de criar as tabelas, poderá trabalhar da seguinte maneira:
----- Inserindo Usuário -----
INSERT INTO users VALUES('usuario', MD5('senha'), 'ROLE_...')
Bem… não posso dizer que trabalhar com Spring é fácil, mas… depois que você aprende a configurá-lo e se adequa a alguns critérios, certamente não tem problemas!
Espero que esta matéria lhe ajude em algo! Em anexo envio um pequeno ficheiro de onde você poderá iniciar um Projeto e estudar mais esta excelente ferramenta.
Faça o Download do código usado neste tutorial: MySQL – Usando O Spring Security [7]