11.2.3.2. EJB セキュリティーアノテーションの使用
概要
XML 記述子かアノテーションを使用して、どのセキュリティーロールが Enterprise JavaBean (EJB) でメソッドを呼び出しできるかを制御することができます。XML 記述子の使用については 「EJB メソッドパーミッションの使用」 を参照してください。
アノテーションの値は、デプロイメント記述子に明示的に指定されたメソッドの値によって上書きされます。メソッドの値がデプロイメント記述子に指定されていない場合、アノテーションを使用して設定された値が使用されます。粒度の上書きはメソッドごとに行われます。
EJB のセキュリティーパーミッションを制御するアノテーション
- @DeclareRoles
- @DeclareRoles を使用して、どのセキュリティーロールに対してパーミッションをチェックするか定義します。@DeclareRoles が存在しない場合、@RolesAllowed アノテーションよりリストが自動的に構築されます。ロールの設定に関する詳細情報は、『Java EE 6 Tutorial』 の Specifying Authorized Users by Declaring Security Roles を参照してください。
- @RolesAllowed、@PermitAll、@DenyAll
@RolesAllowed
を使用して、1 つまたは複数のメソッドへのアクセスが許可されるロールをリストします。@PermitAll
または@DenyAll
を使用して、すべてのロールが 1 つまたは複数のメソッドを使用することを許可または拒否します。アノテーションメソッドパーミッションの設定に関する詳細は、『Java EE 6 Tutorial』 の Specifying Authorized Users by Declaring Security Roles を参照してください。- @RunAs
@RunAs
を使用して、アノテーション付けされたメソッドから呼び出しを行うときにメソッドが使用するロールを指定します。伝播されたセキュリティーアイデンティティーをアノテーションを使用して設定する方法については、『Java EE 6 Tutorial』 の Propagating a Security Identity (Run-As) を参照してください。
例11.10 セキュリティーアノテーションの例
@Stateless @RolesAllowed({"admin"}) @SecurityDomain("other") public class WelcomeEJB implements Welcome { @PermitAll public String WelcomeEveryone(String msg) { return "Welcome to " + msg; } @RunAs("tempemployee") public String GoodBye(String msg) { return "Goodbye, " + msg; } public String GoodbyeAdmin(String msg) { return "See you later, " + msg; } }
このコードでは、すべてのロールが
WelcomeEveryone
メソッドにアクセスできます。呼び出し時、GoodBye
メソッドは tempemployee
ロールを使用します。GoodbyeAdmin
メソッドおよびセキュリティーアノテーションのない他のメソッドにアクセスできるのは admin
ロールのみです。