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>