18.4.3.2. EJB セキュリティーアノテーションの使用
概要
XML 記述子またはアノテーションのいずれかを使用して、Enterprise JavaBean (EJB) でメソッドを呼び出すことのできるセキュリティーロールを制御できます。XML 記述子の使用については、「EJB メソッドパーミッションの使用」 を参照してください。
デプロイメント記述子に明示的に指定されるメソッドの値はすべて、アノテーションの値を上書きします。メソッドの値がデプロイメント記述子で指定されていない場合は、アノテーションを使用して設定された値が使用されます。上書きの粒度は、方法ごとに決定されます。
EJB のセキュリティーパーミッションを制御するアノテーション
- @DeclareRoles
- @DeclareRoles を使用して、パーミッションをチェックするセキュリティーロールを定義します。@DeclareRoles がない場合、一覧は @RolesAllowed アノテーションから自動的にビルドされます。ロールの設定に関する詳細は、『Java EE 6 チュートリアル』 Specifying Authorized Users by Declaring Security Roles を参照してください。
- @RolesAllowed, @PermitAll, @DenyAll
- 使用する
@RolesAllowed
1 つまたは複数のメソッドへのアクセスが許可されているロールを一覧表示します。使用する@PermitAll
また@DenyAll
1 つまたは複数のメソッドの使用からすべてのロールを許可または拒否します。アノテーションメソッドのパーミッション設定に関する詳細は、『Java EE 6 チュートリアル』 Specifying Authorized Users by Declaring Security Roles を参照してください。 - @RunAs
@RunAs
を使用して、アノテーション付きのメソッドから呼び出しを行うときにメソッドが使用するロールを指定します。アノテーションを使用してセキュリティーアイデンティティーを伝播する方法は、『Java EE 6 チュートリアル』 Propagating a Security Identity (Run-As) を参照してください。
例18.37 セキュリティー注釈の例
@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
。TheGoodBye
メソッドはを使用しますtempemployee
電話をかけるときのロール。のみadmin
ロールはメソッドにアクセスできますGoodbyeAdmin
、およびセキュリティーアノテーションのないその他のメソッド。