SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
Workshop Segurança JEE
Agenda ,[object Object]
Conceitos segurança JEE
Desenvolvendo: RAD
Implementação, testes
Demo
Java Authorization Contract for Containers JACC
Demo
Infraestrutura
Introdução a segurança de serviços web,[object Object]
3o pilar da Qualidade da Aplicação ,[object Object]
 Performance
Segurança,[object Object]
 Os aplicativos são implantados com vulnerabilidades
 Configurações de baixa segurança expõem as empresas à perdas de negócios
 Os requisitos regulatórios de PCI exigem a segurança de aplicativo
 80% dos custos de desenvolvimento são gastos na identificação e correção de defeitos,[object Object]
 Assessora e monitora conformidade da política de segurança em toda a empresa
 Melhora a conformidade com as normas do setor e exigências regulatórias (por exemplo PCI)
 Melhora a capacidade de integrar aplicativos críticos do negócio
 Teste e controle automatizados durante todo o ciclo de vida do desenvolvimento, reduzindo os custos de segurança a longo prazo.,[object Object]
Impacto no ciclo de desenvolvimento da aplicação
Limitação dos componentes desenvolvido internamente
Custo e prazo de atualização dos componentes
Modelo de autorização relativamente complicado
Falta de auditoria
Usar solução de mercado
Velocidade na colocação de novas aplicações
Aumentar controle de acesso – Diminuir falhas
Transparente para as aplicações
Auditoria de acesso
Gerenciamento unificado das políticas,[object Object]
Arquitetura lógica Web Container WebSEAL Autorização Servidor Políticas EJB Container
Conceitos de Segurança JEE
Modelo de segurança JEE ,[object Object]
Os papeis de segurança são aplicados nos componentes Web e EJB métodos EJB ou URIs Web ,[object Object], Declarativa em tempo de  configuração, através dos  ‘deployment descriptors’  Programática utilizando as APIS padrões em tempo de desenvolvimento ,[object Object],[object Object]
Modelo de autorização baseado em papel Quais papeis são permitidos? ,[object Object]
Servlet/jsp: roles necessários nas security constraintsAcesso autorizado Lista de papeis SIM Algum igual? Requisição autenticada Quais papeis são atribuídos? ,[object Object]
Obter os roles atribuídos a esse usuário/grupo NÃO Lista de papeis Acesso negado
Mapeamento Application Deployment Descriptor Grupo  Mapeamento                usuários Usuário Recurso  Mapeamento Role Usuário Usuário Usuário Usuário Role Metodo EJB Role Grupo URI Web Grupo Usuário Role  Mapeamento 	Principal Definido pelo programador da aplicação Definido pelo instalador da aplicação
Mapeamento Processos (antigo-novo) Cadastrar papelRU 2 ETrust Papel RA Permissão Papel RU 4 5 6 Cadastrar usuário Associar Papel RU ao usuário 1 Cadastrar permissão com descritor da aplicação Cadastrar papel RA e associar permissão Associar papel RA e papel RU 3 Usuário GerenciadorLDAP sincronização Colocar usuário no grupo RAD-Security Editor Deploy-script Role JEE Recurso JEE Grupo RU
Implementando a Segurança JEE
Segurança EJB declarativa ,[object Object],Lista de annotations EJB @DeclareRoles @DenyAll @PermitAll @RolesAllowed @RunAs
Segurança EJB declarativa ,[object Object],Restrigir acesso ao EJB de sessão Donate import javax.annotation.security.DeclareRoles; import javax.annotation.security.RolesAllowed; .... @DeclareRoles( { "DMANAGERS_ROLE", "DUSERS_ROLE" }) public class DonateBean implements DonateBeanInterface, ...... { @RolesAllowed( { "DMANAGERS_ROLE","DUSERS_ROLE" }) public void donateToFund(Employee employee, Fund fund, int hours) ... ...... @RolesAllowed( { "DMANAGERS_ROLE","DUSERS_ROLE" }) public String donateToFund(int employeeId, String fundName, int hours) {
Deployment descriptor EJB ejb-jar.xml (diretório DonateEJB/ejbModule/META-INF) imediatamente antes do tag </ejb-jar.xml>  <assembly-descriptor> 	<security-role> 		<role-name>DMANAGERS_ROLE</role-name> 	</security-role> 	<security-role> 		<role-name>DUSERS_ROLE</role-name> 	</security-role> 	<method-permission> 		<role-name>DUSERS_ROLE</role-name> 		<role-name>DMANAGERS_ROLE</role-name> 		<method> 		         <ejb-name>DonateBean</ejb-name> 		         <method-name>donateToFund</method-name> 		</method> 	</method-permission> </assembly-descriptor> ,[object Object],[object Object]
Segurança WEB Editor de segurança do RAD: 	Restringir o  acesso a páginas Web com segurança declarativa
Informações de segurança O editor de segurança insere as seguintes informações no arquivo web.xml: A restrição de segurança <security-constraint>  é o elemento base  que contém: ,[object Object]
O elemento  <auth-constraint> define quais são os roles necessários para acessar esse conjunto de recursos Web.
O elemento  <security-role> declare os nomes dos roles utilizados nos elementos security-constraint.,[object Object]
Configurar roles do EAR e mapeamento de roles - 1 Próximo slide
Configurar roles do EAR e mapeamento de roles - 2
Teste da segurança declarativa EJB com JUnit
Código para segurança System.setProperty("com.ibm.SSL.ConfigURL", propDir +"ssl.client.props"); System.setProperty("java.security.auth.login.config", propDir +"wsjaas_client.conf"); System.setProperty("com.ibm.CORBA.ConfigURL",propDir +"sas.client.props"); Definir SSL, JAAS e SAS (Secure Authentication Services) Propriedades necessárias para acessar o servidor ctx.lookup(""); Conectar ao Contexto inicial para carregar o Realm default e  carregar as informações necessárias ao Security Server LoginContext lc = new LoginContext("WSLogin", new WSCallbackHandlerImpl("DNARMSTRONG", "xxxxxxxx")); lc.login(); final Subject subject = lc.getSubject(); System.out.println("subject=" + subject.toString()); WSSubject.setRunAsSubject(subject); Criar o contexto do login, fazer o login, e colocar o usuário autenticado como o usuário default para este thread de execução
Teste de segurançaem EJB
Teste a segurança declarativa EJB com Universal Test Client (UTC)
Teste da segurança declarativa Web Mapeamento
Teste da segurança declarativa Webcom o usuário DGADAMS
Testar o acesso com o usuário DNARMSTRONG
Implementar segurança programática numa página Web <h:outputTextvalue="ROLES: "/> <h:outputTextvalue="EDITOR"rendered="#{rich:isUserInRole('EDITOR')}"/> <h:outputTextvalue="LEITOR"rendered="#{rich:isUserInRole('LEITOR')}"/> <h:outputTextvalue="DIRETOR"rendered="#{rich:isUserInRole('DIRETOR')}"/> <h:outputTextvalue="GERENTE"rendered="#{rich:isUserInRole('GERENTE')}"/>
DEMO

Mais conteúdo relacionado

Mais procurados

Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8Helder da Rocha
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupadosSegurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupadosLuis Cipriani
 
Desenvolvimento de Software Seguro
Desenvolvimento de Software SeguroDesenvolvimento de Software Seguro
Desenvolvimento de Software SeguroAugusto Lüdtke
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR, UnB
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEMagno Logan
 
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasTratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasMagno Logan
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsDenis L Presciliano
 

Mais procurados (9)

Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupadosSegurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
 
Desenvolvimento de Software Seguro
Desenvolvimento de Software SeguroDesenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
 
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasTratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 

Destaque

Destaque (7)

Controladores
ControladoresControladores
Controladores
 
Netiqueta
NetiquetaNetiqueta
Netiqueta
 
Programa Fiestas 2015
Programa Fiestas 2015Programa Fiestas 2015
Programa Fiestas 2015
 
Dalma acevedo
Dalma acevedoDalma acevedo
Dalma acevedo
 
Bmm 2012 Highlights
Bmm 2012 HighlightsBmm 2012 Highlights
Bmm 2012 Highlights
 
(Audio)dark dark forest2
(Audio)dark dark forest2(Audio)dark dark forest2
(Audio)dark dark forest2
 
Para a Minha Irmã
Para a Minha IrmãPara a Minha Irmã
Para a Minha Irmã
 

Semelhante a Segurança JEE Workshop

Introdução a AOP + SpringAOP
Introdução a AOP + SpringAOPIntrodução a AOP + SpringAOP
Introdução a AOP + SpringAOPelliando dias
 
WebGoat Project - Apresentação
WebGoat Project - ApresentaçãoWebGoat Project - Apresentação
WebGoat Project - ApresentaçãoCleyton Kano
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018André Luiz Forchesatto
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBAdriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontMichel Ribeiro
 
Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Thiago Barradas
 

Semelhante a Segurança JEE Workshop (20)

Segurança J2EE
Segurança J2EESegurança J2EE
Segurança J2EE
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Segurança e Controle de errros
Segurança e Controle de errrosSegurança e Controle de errros
Segurança e Controle de errros
 
Introdução a AOP + SpringAOP
Introdução a AOP + SpringAOPIntrodução a AOP + SpringAOP
Introdução a AOP + SpringAOP
 
RYSYS Overview
RYSYS OverviewRYSYS Overview
RYSYS Overview
 
WebGoat Project - Apresentação
WebGoat Project - ApresentaçãoWebGoat Project - Apresentação
WebGoat Project - Apresentação
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018
 
Java e Cloud Computing
Java e Cloud ComputingJava e Cloud Computing
Java e Cloud Computing
 
Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJB
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de Front
 
Webgoat Project - Apresentação
Webgoat Project - ApresentaçãoWebgoat Project - Apresentação
Webgoat Project - Apresentação
 
API Apontador
API ApontadorAPI Apontador
API Apontador
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 

Segurança JEE Workshop