Rodrigo Cândido da Silva
Comentar os principais conceitos sobre segurança e demonstrar a implementação de segurança da plataforma Java EE.
Segurança Objetivos da Segurança Princípios de Segurança Algumas Soluções de Segurança Plataforma Java EE JAAS Autenticação Autorização Utilização Conclusões
“ Um mecanismo de Segurança da Informação providencia meios para reduzir as vulnerabilidades existentes em um Sistema de Informação.”
Autenticação Autorização Auditoria Confidencialidade Integridade Disponibilidade Não Repudiação
Proteger os ativos; Garantir os princípios da segurança durante todo o ciclo de vida da informação; Evitar que ameaças explorem as vulnerabilidades; Evitar ou conter os ataques; Gerenciar e reduzir os riscos; Garantir a segurança da informação em qualquer meio.
F D Fonte de Informação Destino da Informação Fluxo Normal F D Interrupção F D Interceptação I F D Modificação M F D Fabricação F
IP Filtering Network Address Translation (NAT) IP Security (IPSec) SOCKS Secure Sockets Layer (SSL) Application Proxies Firewalls Secure Electronic Transactions (SET) …
 
 
 
Serviços oferecidos pelos containers: Escalabilidade G estão de memória, ciclo de vida de   objetos e estado de objetos Conexões, Transações, Serviço de nomes Segurança Tolerância a falhas Integração WebServices Clustering A lta disponibilidade  C onfiabilidade …
Java Authentication and Authorization Service (JAAS); Mecanismo de Autenticação e Autorização de Usuários, baseado em uma  identidade  e  role(s)  (perfil de acesso) associado(s); Totalmente compatível com o padrão Java EE; Restringe o acesso a uma aplicação Java, limitando acesso a uma  url ,  método de um componente EJB  ou  Conteúdo  de uma tela do usuário; Possibilita uma abordagem declarativa ou programática, dando a possibilidade de um desacoplamento entre segurança e regras de negócio.
Aplicação Login Context Login Modules –  São “plugáveis” e não interferem nos algorítimos de negócio implementados... LDAP LoginModule DataBase LoginModule NT LoginModule Active Directory MySQL NT Server
 
HTTP Basic Authentication Form-Based Authentication
HTTPS Client Authentication Digest Authentication
 
Passo 1 - Configurando o LoginModule <!-- Exemplo: File Login Module Arquivo:  %JBOSS_HOME%\server\default\conf\login-config.xml --> <application-policy name= &quot;exemplojaas&quot; > <authentication> <login-module code= &quot;org.jboss.security.auth.spi.UsersRolesLoginModule&quot;  flag= &quot;required&quot; > <module-option name= &quot;usersProperties&quot; > props/exemplo-jaas-users.properties </module-option> <module-option name= &quot;rolesProperties&quot; > props/exemplo-jaas-roles.properties </module-option> </login-module> </authentication> </application-policy>
Passo 2 – Definindo o Tipo de Autenticação <!—   Define Formul ário de login (login-config) . Arquivo:  WEB-INF\web.xml --> <login-config> <auth-method> FORM </auth-method> <realm-name> ExemploJAAS </realm-name>   <form-login-config> <form-login-page> /loginpage.do </form-login-page> <form-error-page> /loginfail.do </form-error-page> </form-login-config> </login-config>
Passo 3 – Protegendo o Web Container <!—   Define a constraint de seguranca para as actions do sistema. Arquivo:  WEB-INF\web.xml  <security-constraint>   <web-resource-collection> <web-resource-name> ExemploJAAS </web-resource-name> <description> Mapeamento da acoes do sistema </description> <url-pattern> /homepage.do </url-pattern> <url-pattern> /funcionario.do </url-pattern> </web-resource-collection> <auth-constraint> <role-name> supervisor </role-name> <role-name> gerente </role-name> </auth-constraint> </security-constraint>
Passo 4 – Protegendo o EJB Container <!—   EJB 3.0 - Via annotation (Java5 ou superior)   Definição da classe --> @Stateless @DeclareRoles({ &quot;supervisor&quot; , &quot;gerente&quot; , &quot;operador&quot; }) public   class  FuncionarioServiceImpl  implements  FuncionarioService { @RolesAllowed( &quot;supervisor&quot; ) public void  delete(Integer idFuncionario) {} @RolesAllowed({ &quot;supervisor&quot; , &quot;gerente&quot; }) public void  save(Funcionario funcionario)  throws  LimiteSalarioException { if  ((!context.isCallerInRole( &quot;supervisor&quot; ) &&  (funcionario.getSalario() > 10000.0d))){ throw new  LimiteSalarioException( &quot;limite.salario.exception&quot; );} } }
JAAS fornece uma estrutura simples, produtiva e integrada com a plataforma Java;  JAAS não implementa toda estrutura de segurança necessária à uma aplicação. Portanto, ele deve ser combinado com outros mecanismos (SSL, Firewalls, Proxies, etc).
?

Segurança J2EE

  • 1.
  • 2.
    Comentar os principaisconceitos sobre segurança e demonstrar a implementação de segurança da plataforma Java EE.
  • 3.
    Segurança Objetivos daSegurança Princípios de Segurança Algumas Soluções de Segurança Plataforma Java EE JAAS Autenticação Autorização Utilização Conclusões
  • 4.
    “ Um mecanismode Segurança da Informação providencia meios para reduzir as vulnerabilidades existentes em um Sistema de Informação.”
  • 5.
    Autenticação Autorização AuditoriaConfidencialidade Integridade Disponibilidade Não Repudiação
  • 6.
    Proteger os ativos;Garantir os princípios da segurança durante todo o ciclo de vida da informação; Evitar que ameaças explorem as vulnerabilidades; Evitar ou conter os ataques; Gerenciar e reduzir os riscos; Garantir a segurança da informação em qualquer meio.
  • 7.
    F D Fontede Informação Destino da Informação Fluxo Normal F D Interrupção F D Interceptação I F D Modificação M F D Fabricação F
  • 8.
    IP Filtering NetworkAddress Translation (NAT) IP Security (IPSec) SOCKS Secure Sockets Layer (SSL) Application Proxies Firewalls Secure Electronic Transactions (SET) …
  • 9.
  • 10.
  • 11.
  • 12.
    Serviços oferecidos peloscontainers: Escalabilidade G estão de memória, ciclo de vida de objetos e estado de objetos Conexões, Transações, Serviço de nomes Segurança Tolerância a falhas Integração WebServices Clustering A lta disponibilidade C onfiabilidade …
  • 13.
    Java Authentication andAuthorization Service (JAAS); Mecanismo de Autenticação e Autorização de Usuários, baseado em uma identidade e role(s) (perfil de acesso) associado(s); Totalmente compatível com o padrão Java EE; Restringe o acesso a uma aplicação Java, limitando acesso a uma url , método de um componente EJB ou Conteúdo de uma tela do usuário; Possibilita uma abordagem declarativa ou programática, dando a possibilidade de um desacoplamento entre segurança e regras de negócio.
  • 14.
    Aplicação Login ContextLogin Modules – São “plugáveis” e não interferem nos algorítimos de negócio implementados... LDAP LoginModule DataBase LoginModule NT LoginModule Active Directory MySQL NT Server
  • 15.
  • 16.
    HTTP Basic AuthenticationForm-Based Authentication
  • 17.
    HTTPS Client AuthenticationDigest Authentication
  • 18.
  • 19.
    Passo 1 -Configurando o LoginModule <!-- Exemplo: File Login Module Arquivo: %JBOSS_HOME%\server\default\conf\login-config.xml --> <application-policy name= &quot;exemplojaas&quot; > <authentication> <login-module code= &quot;org.jboss.security.auth.spi.UsersRolesLoginModule&quot; flag= &quot;required&quot; > <module-option name= &quot;usersProperties&quot; > props/exemplo-jaas-users.properties </module-option> <module-option name= &quot;rolesProperties&quot; > props/exemplo-jaas-roles.properties </module-option> </login-module> </authentication> </application-policy>
  • 20.
    Passo 2 –Definindo o Tipo de Autenticação <!— Define Formul ário de login (login-config) . Arquivo: WEB-INF\web.xml --> <login-config> <auth-method> FORM </auth-method> <realm-name> ExemploJAAS </realm-name> <form-login-config> <form-login-page> /loginpage.do </form-login-page> <form-error-page> /loginfail.do </form-error-page> </form-login-config> </login-config>
  • 21.
    Passo 3 –Protegendo o Web Container <!— Define a constraint de seguranca para as actions do sistema. Arquivo: WEB-INF\web.xml  <security-constraint> <web-resource-collection> <web-resource-name> ExemploJAAS </web-resource-name> <description> Mapeamento da acoes do sistema </description> <url-pattern> /homepage.do </url-pattern> <url-pattern> /funcionario.do </url-pattern> </web-resource-collection> <auth-constraint> <role-name> supervisor </role-name> <role-name> gerente </role-name> </auth-constraint> </security-constraint>
  • 22.
    Passo 4 –Protegendo o EJB Container <!— EJB 3.0 - Via annotation (Java5 ou superior) Definição da classe --> @Stateless @DeclareRoles({ &quot;supervisor&quot; , &quot;gerente&quot; , &quot;operador&quot; }) public class FuncionarioServiceImpl implements FuncionarioService { @RolesAllowed( &quot;supervisor&quot; ) public void delete(Integer idFuncionario) {} @RolesAllowed({ &quot;supervisor&quot; , &quot;gerente&quot; }) public void save(Funcionario funcionario) throws LimiteSalarioException { if ((!context.isCallerInRole( &quot;supervisor&quot; ) && (funcionario.getSalario() > 10000.0d))){ throw new LimiteSalarioException( &quot;limite.salario.exception&quot; );} } }
  • 23.
    JAAS fornece umaestrutura simples, produtiva e integrada com a plataforma Java; JAAS não implementa toda estrutura de segurança necessária à uma aplicação. Portanto, ele deve ser combinado com outros mecanismos (SSL, Firewalls, Proxies, etc).
  • 24.