14.4.3.2. EJB セキュリティーアノテーションの使用
概要
XML 記述子かアノテーションを使用して、どのセキュリティーロールが Enterprise JavaBean (EJB) でメソッドを呼び出しできるかを制御することができます。XML 記述子の使用については 「EJB メソッドパーミッションの使用」 を参照してください。
EJB のセキュリティーパーミッションを制御するアノテーション
- @DeclareRoles
- @DeclareRoles を使用して、どのセキュリティーロールに対してパーミッションをチェックするか定義します。@DeclareRoles が存在しない場合、@RolesAllowed アノテーションよりリストが自動的に構築されます。
- @SecurityDomain
- EJB に使用するセキュリティードメインを指定します。承認のため、EJB に
@RolesAllowed
アノテーションが付いている場合、EJB にセキュリティードメインがアノテーション付けされている場合のみ承認を適用します。 - @RolesAllowed、@PermitAll、@DenyAll
- @RolesAllowed を使用して、1 つまたは複数のメソッドへのアクセスが許可されるロールをリストします。すべてのロールに対して 1 つまたは複数のメソッドの使用を許可する場合は @PermitAll、すべてのロールに対してメソッドの使用を拒否する場合は @DenyAll を使用します。
- @RunAs
- @RunAs を使用してロールを指定すると、メソッドが常にそのロールとして実行されるようにします。
例14.11 セキュリティーアノテーションの例
@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 public String GoodbyeAdmin(String msg) { return "See you later, " + msg; } }
このコードでは、すべてのロールが
WelcomeEveryone
メソッドにアクセスできます。GoodBye
メソッドは tempemployee
ロールとして実行されます。GoodbyeAdmin
メソッドと、セキュリティーアノテーションのない他のメソッドへは admin
ロールのみがアクセスできます。