EJB - Seguridad

La seguridad es una de las principales preocupaciones de cualquier aplicación de nivel empresarial. Incluye identificación de usuario (s) o sistema que accede a la aplicación. Con base en la identificación, permite o deniega el acceso a recursos dentro de la aplicación. Un contenedor EJB gestiona los problemas de seguridad estándar o se puede personalizar para manejar cualquier problema de seguridad específico.

Términos importantes de seguridad

  • Authentication - Este es el proceso que garantiza que el usuario que accede al sistema o la aplicación se verifica como auténtico.

  • Authorization - Este es el proceso que garantiza que el usuario auténtico tenga el nivel adecuado de autoridad para acceder a los recursos del sistema.

  • User - Usuario representa al cliente o sistema que accede a la aplicación.

  • User Groups - Los usuarios pueden ser parte del grupo que tiene ciertas autorizaciones, por ejemplo, el grupo de administradores.

  • User Roles - Los roles definen el nivel de autoridad que tiene un usuario o los permisos para acceder a un recurso del sistema.

Seguridad gestionada por contenedor

EJB 3.0 ha especificado los siguientes atributos / anotaciones de seguridad, que implementan los contenedores EJB.

  • DeclareRoles- Indica que la clase aceptará los roles declarados. Las anotaciones se aplican a nivel de clase.

  • RolesAllowed- Indica que el usuario del rol especificado puede acceder a un método. Se puede aplicar a nivel de clase, lo que da como resultado que se pueda acceder a todos los métodos de la clase comprar usuario del rol especificado.

  • PermitAll- Indica que un método comercial es accesible para todos. Se puede aplicar tanto a nivel de clase como de método.

  • DenyAll - Indica que un método comercial no es accesible para ninguno de los usuarios especificados a nivel de clase o método.

Ejemplo

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
   } 
}

Configuración de seguridad

Asigne roles y grupos de usuarios en el archivo de configuración.

<?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>