EJB - Segurança

A segurança é uma grande preocupação de qualquer aplicativo de nível empresarial. Inclui a identificação do (s) usuário (s) ou sistema que acessa o aplicativo. Com base na identificação, permite ou nega o acesso aos recursos do aplicativo. Um contêiner EJB gerencia questões de segurança padrão ou pode ser personalizado para lidar com questões de segurança específicas.

Termos de segurança importantes

  • Authentication - Este é o processo que garante a autenticidade do usuário que acessa o sistema ou aplicativo.

  • Authorization - Este é o processo que garante que o usuário autêntico tenha o nível correto de autoridade para acessar os recursos do sistema.

  • User - O usuário representa o cliente ou sistema que acessa o aplicativo.

  • User Groups - Os usuários podem fazer parte do grupo com certas autoridades, por exemplo, o grupo do administrador.

  • User Roles - As funções definem o nível de autoridade que um usuário possui ou permissões para acessar um recurso do sistema.

Segurança gerenciada por contêiner

O EJB 3.0 especificou os seguintes atributos / anotações de segurança, que os contêineres EJB implementam.

  • DeclareRoles- Indica que a classe aceitará as funções declaradas. As anotações são aplicadas no nível da classe.

  • RolesAllowed- Indica que um método pode ser acessado pelo usuário da função especificada. Pode ser aplicado no nível da classe, resultando em que todos os métodos da classe podem ser acessados ​​pelo usuário da função especificada.

  • PermitAll- Indica que um método de negócios está acessível a todos. Pode ser aplicado tanto em sala de aula como em nível de método.

  • DenyAll - Indica que um método de negócios não está acessível a nenhum usuário especificado na classe ou no nível do método.

Exemplo

package com.tutorialspoint.security.required;
 
import javax.ejb.*
 
@Stateless
@DeclareRoles({"student" "librarian"})
public class LibraryBean implements LibraryRemote {

   @RolesAllowed({"librarian"})
   public void delete(Book book) {
	  //delete book
   }
   
   @PermitAll
   public void viewBook(Book book) {
      //view book
   }
   
   @DenyAll
   public void deleteAll() {
      //delete all books
   } 
}

Configuração de Segurança

Mapeie funções e grupos de usuários no arquivo de configuração.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<ejb-jar>
   <security-role-mapping>
      <role-name>student</role-name>
      <group-name>student-group</group-name>
   </security-role-mapping>
   <security-role-mapping>
      <role-name>librarian</role-name>
      <group-name>librarian-group</group-name>
   </security-role-mapping>  
   <enterprise-beans/>
</ejb-jar>