Spring Security e Spring Boot Aula - 2018

andreforchesatto 3,487 views 31 slides Nov 22, 2014
Slide 1
Slide 1 of 31
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31

About This Presentation

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


Slide Content

Frameworks para
Desenvolvimento web em
Java
Aula 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 login
Classe de configuração para WebSecurity
Criação do Bean na classe Main

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

Customizando form de login
Criar página jsp para o login

Customizando form de login
Controlador para tratar erros e logout

Liberar URL's

Autenticação com Base de dados
Deve 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" />

Tag Lib JSP
●É possível definir se partes das telas serão
ou não renderizadas através de tag de
segurança.
●Por padrão as tags funcionando com JSP
○<sec:authentication property="principal.username" />
○<sec:authorize access="hasRole('supervisor')">
○<sec:authorize url="/admin">
http://doanduyhai.wordpress.com/2012/02/26/spring-security-part-v-security-tags/
http://docs.spring.io/spring-webflow/docs/2.3.2.RELEASE/reference/html/ch13s11.html

LoginManagedBean - JSF

Login.xhtml - JSF

LoginManagedBean - Logout

Tag Lib Facelets JSF
●Para funcionar em Facelets é nescessário
utilizar outro jar do spring e realizar algumas
configurações:
○Configurar jar;
○Criar arquivo de tag facelets
○Configurar web.xml
http://docs.spring.io/spring-webflow/docs/2.3.2.RELEASE/reference/html/ch13s11.html

Tag Lib Facelets JSF
●Dependência
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>3.2.0.RC1</version>
</dependency>
<dependency>
<groupId>org.springframework.webflow</groupId>
<artifactId>spring-faces</artifactId>
<version>2.3.2.RELEASE</version>
</dependency>

Tag Lib Facelets JSF
●Criar arquivo no WEB-INF springsecurity.
taglib.xml

●Conteúdo do arquivo:


http://docs.spring.io/spring-webflow/docs/2.3.2.RELEASE/reference/html/ch13s11.html

Tag Lib Facelets JSF
●Configurar web.xml

<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/springsecurity.taglib.xml</param-value>
</context-param>
Se existir mais de um taglib facelets no
projeto, os caminho dos arquivos devem
ser separados por (;) ponto e vírgula.

Tag Lib Facelets JSF
●Utilização no JSF

xmlns:sec="http://www.springframework.org/security/tags"
<h:inputText value="#{produtoController.produto.valorVenda}"
rendered="#{sec:areAllGranted('ROLE_ADMIN')}"/>