O documento descreve o framework Spring Security para controle de acesso em sistemas Java. Ele fornece funcionalidades como autenticação HTTP e HTTPS, controle de acesso a métodos e tipos de autenticação como OpenID, LDAP e banco de dados. O documento também explica como configurar o Spring Security para proteger URLs, trocar usuários e senhas padrão e customizar formulários de login.
2. Spring Security
● Framework para controle de acesso a
sistemas criado em 2003 com licença
Apache 2.0;
● Altamente customizavel;
● Simples e fácil de integrar com vários tipos
de framework;
● Utilizado por grandes corporações desde
agências do governo, bancos e instituições
militares;
3. Spring Security - Funcionalidades
● Controle de acesso HTTP e HTTPS;
● Configuração não intrusiva;
● Utilização não invasiva, utilizando AOP;
● Controle de acesso a métodos das regras de
negócio;
● Encoder da senha
● Tipos de autenticação:
○ OpenID
○ LDAP
○ Basic authentication HTTP
○ Base de dados Todos tipos de autenticação:
http://docs.spring.io/spring-security/site/docs/3.2.x/refere
nce/html/introduction.html
6. Configuração Básica
● Com o Spring-boot já vem configurado por
padrão:
○ Bloqueio de URL
○ Usuário e senha em memória
○ Liberação de arquivos static/resource
○ Gera uma senha padrão para testes
● Todas as configurações podem ser
reescritas.
7. Trocando usuário e senha padrão
● No arquivo application.properties
○ security.user.name=meuUsuario
○ security.user.password=minhaSenha
○ security.user.role=admin
9. Customizando form de login
● Deverá ser criada uma classe para
customizar os comportamentos do Spring
● Esta classe pode estender de
WebSecurityConfigurerAdapter para
facilitar a configuração.
● Para o Spring reconhecer a configurar
deverá ser criado um Bean na classe
principal de configuração.
10. Customizando form de login
Classe de configuração para WebSecurity
Criação do Bean na classe Main
11. Customizando form de login
Configurando o formulário. Deve ser configurado
na classe WebSecurityConfig
15. Autenticação com Base de dados
Deve ser criada uma classe de Serviço que implementa a interface
UserDetailService e configurar na classe WebSecurityConfig.
21. ● Anotar o métodos com a regra de segurança
Segurança nos métodos
@EnableGlobalMethodSecurity(securedEnabled=true, prePostEnabled=true)
● Configurar WebSecurityConfig para interceptar
anotações de segurança nos métodos
22. Segurança nos métodos
● Liberar para anonimos utilizarem
○ @Secured("IS_AUTHENTICATED_ANONYMOUSLY")
● Pode ser utilizado JSR-255
public interface BankService {
@PreAuthorize("isAnonymous()")
public Account readAccount(Long id);
@PreAuthorize("isAnonymous()")
public Account[] findAccounts();
@PreAuthorize("hasAuthority('ROLE_TELLER')")
public Account post(Account account, double amount);
}
<global-method-security jsr250-annotations="enabled" />