Spring Security e Spring Boot Aula

23
Frameworks para Desenvolvimento web em Java Aula 04 - Spring Security

Transcript of Spring Security e Spring Boot Aula

Page 1: Spring Security e Spring Boot Aula

Frameworks para Desenvolvimento web em

JavaAula 04 - Spring Security

Page 2: Spring Security e Spring Boot Aula

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;

Page 3: Spring Security e Spring Boot Aula

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/reference/html/introduction.html

Page 4: Spring Security e Spring Boot Aula

Funcionamento básico

URL Filtros Spring

Usuários

Permissões

Exige Permissão? Analisa

Page 5: Spring Security e Spring Boot Aula

Download com Maven

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>

Para projetos com Spring-boot:

Page 6: Spring Security e Spring Boot Aula

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.

Page 7: Spring Security e Spring Boot Aula

Trocando usuário e senha padrão

● No arquivo application.properties○ security.user.name=meuUsuario○ security.user.password=minhaSenha○ security.user.role=admin

Page 8: Spring Security e Spring Boot Aula

Prática

● Executar o primeiro teste com o spring-security

Page 9: Spring Security e Spring Boot Aula

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.

Page 10: Spring Security e Spring Boot Aula

Customizando form de loginClasse de configuração para WebSecurity

Criação do Bean na classe Main

Page 11: Spring Security e Spring Boot Aula

Customizando form de loginConfigurando o formulário. Deve ser configurado na classe WebSecurityConfig

Page 12: Spring Security e Spring Boot Aula

Customizando form de loginCriar página jsp para o login

Page 13: Spring Security e Spring Boot Aula

Customizando form de loginControlador para tratar erros e logout

Page 14: Spring Security e Spring Boot Aula

Liberar URL's

Page 15: Spring Security e Spring Boot Aula

Autenticação com Base de dadosDeve ser criada uma classe de Serviço que implementa a interface UserDetailService e configurar na classe WebSecurityConfig.

Page 16: Spring Security e Spring Boot Aula

Diagrama Usuários e Permissões

Page 17: Spring Security e Spring Boot Aula

Service - UsuarioService

Page 18: Spring Security e Spring Boot Aula

Usuario - UsuarioDetails

Page 19: Spring Security e Spring Boot Aula

UsuarioPermissao - GrantedAuthority

Classe usuário método que busca permissões

Page 20: Spring Security e Spring Boot Aula

Usuário da Sessão

Page 21: Spring Security e Spring Boot Aula

● 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

Page 22: Spring Security e Spring Boot Aula

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" />

Page 23: Spring Security e Spring Boot Aula

Prática