Spring Security e Spring Boot Aula

Post on 14-Jul-2015

555 views 4 download

Transcript of Spring Security e Spring Boot Aula

Frameworks para Desenvolvimento web em

JavaAula 04 - Spring Security

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;

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

Funcionamento básico

URL Filtros Spring

Usuários

Permissões

Exige Permissão? Analisa

Download com Maven

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

Para projetos com Spring-boot:

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.

Trocando usuário e senha padrão

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

Prática

● Executar o primeiro teste com o spring-security

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.

Customizando form de loginClasse de configuração para WebSecurity

Criação do Bean na classe Main

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

Customizando form de loginCriar página jsp para o login

Customizando form de loginControlador para tratar erros e logout

Liberar URL's

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

Diagrama Usuários e Permissões

Service - UsuarioService

Usuario - UsuarioDetails

UsuarioPermissao - GrantedAuthority

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

Usuário da Sessão

● 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

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

Prática