11.9. アプリケーションでのセキュリティードメインの使用
概要
アプリケーションでセキュリティードメインを使用するには、最初にサーバーの設定でセキュリティードメインを定義し、アプリケーションのデプロイメント記述子でアプリケーションに対して有効にする必要があります。次に、必要なアノテーションを使用する EJB に追加する必要があります。このトピックでは、アプリケーションでセキュリティードメインを使用するために必要な手順について説明します。
警告
アプリケーションが、認証キャッシュを使用するセキュリティードメインの一部である場合、セキュリティードメインの他のアプリケーションもそのアプリケーションのユーザー認証を使用できます。
手順11.13 セキュリティードメインを使用するようアプリケーションを設定
セキュリティードメインの定義
サーバーの設定ファイルでセキュリティードメインを定義した後、アプリケーションの記述子ファイルでアプリケーションに対して有効にする必要があります。サーバーの設定ファイルへセキュリティードメインを設定
セキュリティードメインは、サーバーの設定ファイルのsecurity
サブシステムで設定されます。JBoss EAP 6 インスタンスが管理対象ドメインで稼働している場合、これはdomain/configuration/domain.xml
ファイルになります。JBoss EAP 6 インスタンスがスタンドアロンサーバーとして実行されている場合、これはstandalone/configuration/standalone.xml
ファイルになります。他
のjboss-web-policy
、およびjboss-ejb-policy
セキュリティードメインは、JBoss EAP 6 ではデフォルトで提供されます。以下の XML の例は、サーバーの設定ファイルのsecurity
サブシステムからコピーされました。セキュリティードメインのcache-type
属性は、認証チェックをより高速にするためにキャッシュを指定します。許可される値はデフォルト
で簡単なマップをキャッシュとして使用するか、infinispan
が Infinispan キャッシュを使用します。<subsystem xmlns="urn:jboss:domain:security:1.2"> <security-domains> <security-domain name="other" cache-type="default"> <authentication> <login-module code="Remoting" flag="optional"> <module-option name="password-stacking" value="useFirstPass"/> </login-module> <login-module code="RealmDirect" flag="required"> <module-option name="password-stacking" value="useFirstPass"/> </login-module> </authentication> </security-domain> <security-domain name="jboss-web-policy" cache-type="default"> <authorization> <policy-module code="Delegating" flag="required"/> </authorization> </security-domain> <security-domain name="jboss-ejb-policy" cache-type="default"> <authorization> <policy-module code="Delegating" flag="required"/> </authorization> </security-domain> </security-domains> </subsystem>
管理コンソールまたは CLI を使用して、追加のセキュリティードメインを必要に応じて設定できます。アプリケーションの記述子ファイルでのセキュリティードメインの有効化
セキュリティードメインは、アプリケーションのWEB-INF/jboss
-domain> 子要素に指定されます。以下の例は、-web.xml
ファイルの <jboss-web
> 要素の <securitymy-domain
という名前のセキュリティードメインを設定します。<jboss-web> <security-domain>my-domain</security-domain> </jboss-web>
これは、WEB-INF/jboss-web.xml
記述子で指定できる多くの設定の 1 つのみです。
EJB への必要なアノテーションの追加
@SecurityDomain
および@RolesAllowed
アノテーションを使用して EJB でセキュリティーを設定します。以下の EJB コードの例では、guest
ロールのユーザーが他
のセキュリティードメインへのアクセスを制限します。package example.ejb3; import java.security.Principal; import javax.annotation.Resource; import javax.annotation.security.RolesAllowed; import javax.ejb.SessionContext; import javax.ejb.Stateless; import org.jboss.ejb3.annotation.SecurityDomain; /** * Simple secured EJB using EJB security annotations * Allow access to "other" security domain by users in a "guest" role. */ @Stateless @RolesAllowed({ "guest" }) @SecurityDomain("other") public class SecuredEJB { // Inject the Session Context @Resource private SessionContext ctx; /** * Secured EJB method using security annotations */ public String getSecurityInfo() { // Session context injected using the resource annotation Principal principal = ctx.getCallerPrincipal(); return principal.toString(); } }
その他のコード例は、Red Hat カスタマーポータルで利用できる JBoss EAP 6 Quickstarts バンドルのejb-security
クイックスタートを参照してください。