EJB - Безопасность

Безопасность - главная забота любого приложения корпоративного уровня. Он включает идентификацию пользователя (ей) или системы, осуществляющей доступ к приложению. На основе идентификации он разрешает или запрещает доступ к ресурсам в приложении. Контейнер EJB управляет стандартными проблемами безопасности или может быть настроен для решения любых конкретных проблем безопасности.

Важные условия безопасности

  • Authentication - Это процесс, обеспечивающий проверку подлинности пользователя, получающего доступ к системе или приложению.

  • Authorization - Это процесс, гарантирующий, что подлинный пользователь имеет необходимый уровень полномочий для доступа к системным ресурсам.

  • User - Пользователь представляет клиента или систему, которая обращается к приложению.

  • User Groups - Пользователи могут быть частью группы с определенными полномочиями, например, группа администраторов.

  • User Roles - Роли определяют уровень полномочий пользователя или разрешений на доступ к системному ресурсу.

Безопасность, управляемая контейнером

EJB 3.0 определяет следующие атрибуты / аннотации безопасности, которые реализуют контейнеры EJB.

  • DeclareRoles- Указывает, что класс примет заявленные роли. Аннотации применяются на уровне класса.

  • RolesAllowed- Указывает, что к методу может получить доступ пользователь с указанной ролью. Может применяться на уровне класса, в результате чего все методы класса могут быть доступны для пользователя с указанной ролью.

  • PermitAll- Указывает, что бизнес-метод доступен всем. Его можно применять как на уровне класса, так и на уровне метода.

  • DenyAll - Указывает, что бизнес-метод недоступен для любого пользователя, указанного на уровне класса или метода.

пример

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

Конфигурация безопасности

Сопоставьте роли и группы пользователей в файле конфигурации.

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