13.2.9. アプリケーションでのセキュリティードメインの使用

概要

サーバーグループやスタンドアローンサーバーに対してセキュリティードメインを設定した後、アプリケーションを設定して使用するようにすることができます。セキュリティードメインを WAR の WEB-INF/jboss-web.xml 記述子ファイルに指定するか、アノテーションを用いて指定することが可能です。

例13.1 WEB-INF/jboss-web.xml にセキュリティードメインを指定する

セキュリティードメインは WEB-INF/web.xml ファイルにある <jboss-web> 要素の <security-domain> 子要素に指定します。
<jboss-web>
	<security-domain>my-domain</security-domain>
</jboss-web>		

これが WEB-INF/jboss-web.xml 記述子に指定できる多くの設定の 1 つになります。

例13.2 アノテーションを用いて EJB 上でセキュリティードメインを指定する

次の例は EJB 上で SPNEGO セキュリティードメインを指定します。セキュリティードメインは既にコンテナに設定されています。
package example.ejb3;
 
import javax.annotation.Resource;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJBContext;
import javax.ejb.Stateless;

import org.jboss.ejb3.annotation.SecurityDomain;
 
@Stateless
@SecurityDomain("SPNEGO")
@RolesAllowed("JBossAdmin")
public class SessionBean implements Session
{
 
   @Resource
   private EJBContext context;
 
   public void echo(String echo)
   {
      System.out.println(echo);
      System.out.println("Principal.getClass(): " + context.getCallerPrincipal().getClass());
      System.out.println("Principal.getName(): " + context.getCallerPrincipal().getName());
      System.out.println("isCallerInRole('JBossAdmin')? " + context.isCallerInRole("JBossAdmin"));
   }
 
}
上記は完全なアプリケーションではなく、セッション Bean の実装になります。