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>