EJB - Sicurezza

La sicurezza è una delle principali preoccupazioni di qualsiasi applicazione di livello aziendale. Include l'identificazione degli utenti o del sistema che accede all'applicazione. In base all'identificazione, consente o nega l'accesso alle risorse all'interno dell'applicazione. Un contenitore EJB gestisce i problemi di sicurezza standard o può essere personalizzato per gestire eventuali problemi di sicurezza specifici.

Termini di sicurezza importanti

  • Authentication - Questo è il processo che garantisce l'autenticità dell'utente che accede al sistema o all'applicazione.

  • Authorization - Questo è il processo che garantisce che l'utente autentico abbia il giusto livello di autorità per accedere alle risorse di sistema.

  • User - L'utente rappresenta il client o il sistema che accede all'applicazione.

  • User Groups - Gli utenti possono far parte del gruppo con determinate autorizzazioni, ad esempio il gruppo dell'amministratore.

  • User Roles - I ruoli definiscono il livello di autorità, un utente o le autorizzazioni per accedere a una risorsa di sistema.

Sicurezza gestita dal container

EJB 3.0 ha specificato i seguenti attributi / annotazioni di sicurezza, implementati dai contenitori EJB.

  • DeclareRoles- Indica che la classe accetterà i ruoli dichiarati. Le annotazioni vengono applicate a livello di classe.

  • RolesAllowed- Indica che è possibile accedere a un metodo dall'utente del ruolo specificato. Può essere applicato a livello di classe risultando in cui è possibile accedere a tutti i metodi della classe acquistando l'utente del ruolo specificato.

  • PermitAll- Indica che un metodo aziendale è accessibile a tutti. Può essere applicato sia a livello di classe che a livello di metodo.

  • DenyAll - Indica che un metodo aziendale non è accessibile a nessuno degli utenti specificati a livello di classe o di metodo.

Esempio

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

Configurazione della protezione

Mappare i ruoli e il gruppo di utenti nel file di configurazione.

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