Spring Security e Spring Boot Aula - 2016

1.983 visualizações

Publicada em

Spring Security e Spring Boot Aula pós graduação em Java UTFPR Pato Branco.

Publicada em: Educação

Spring Security e Spring Boot Aula - 2016

  1. 1. Frameworks para Desenvolvimento web em Java Aula 04 - Spring Security
  2. 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. 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
  4. 4. Funcionamento básico URL Filtros Spring Usuários Permissões Exige Permissão? Analisa
  5. 5. Download com Maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> Para projetos com Spring-boot:
  6. 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. 7. Trocando usuário e senha padrão ● No arquivo application.properties ○ security.user.name=meuUsuario ○ security.user.password=minhaSenha ○ security.user.role=admin
  8. 8. Prática ● Executar o primeiro teste com o spring-security
  9. 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. 10. Customizando form de login Classe de configuração para WebSecurity Criação do Bean na classe Main
  11. 11. Customizando form de login Configurando o formulário. Deve ser configurado na classe WebSecurityConfig
  12. 12. Customizando form de login Criar página jsp para o login
  13. 13. Customizando form de login Controlador para tratar erros e logout
  14. 14. Liberar URL's
  15. 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.
  16. 16. Diagrama Usuários e Permissões
  17. 17. Service - UsuarioService
  18. 18. Usuario - UsuarioDetails
  19. 19. UsuarioPermissao - GrantedAuthority Classe usuário método que busca permissões
  20. 20. Usuário da Sessão
  21. 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. 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" />
  23. 23. Prática

×