検索

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

download PDF

概要

アプリケーションでセキュリティードメインを使用するには、最初にサーバーの設定でセキュリティードメインを定義してから、アプリケーションの展開記述子でアプリケーションに対してセキュリティードメインを有効にする必要があります。次に、それを使用する EJB に必要なアノテーションを追加する必要があります。このトピックでは、アプリケーションでセキュリティードメインを使用するために必要な手順について説明します。

警告
アプリケーションが、認証キャッシュを使用するセキュリティードメインの一部である場合、セキュリティードメインの他のアプリケーションもそのアプリケーションのユーザー認証を使用できます。

手順18.1 セキュリティードメインを使用するようアプリケーションを設定

  1. セキュリティードメインの定義

    サーバーの設定ファイルでセキュリティードメインを定義した後、アプリケーションの記述子ファイルでアプリケーションに対して有効にする必要があります。
    1. サーバーの設定ファイルへセキュリティードメインを設定

      セキュリティードメインは、サーバーの設定ファイルの セキュリティー サブシステムで設定されます。JBoss EAP 6 インスタンスが管理対象ドメインで実行されている場合、これは domain/configuration/domain.xml ファイルです。JBoss EAP 6 インスタンスがスタンドアロンサーバーとして実行されている場合、これは standalone/configuration/standalone.xml ファイルです。
      jboss-web-policy および jboss-ejb-policy セキュリティードメインは、JBoss EAP 6 でデフォルトで提供されます。次の XML の例は、サーバーの設定ファイルの セキュリティー サブシステムからコピーされたものです。
      Thecache-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 を使用して、追加のセキュリティードメインを必要に応じて設定できます。
    2. アプリケーションの記述子ファイルでのセキュリティードメインの有効化

      セキュリティードメインは、アプリケーションの WEB-INF/jboss-web.xml ファイルの <jboss-web> 要素の <security-domain> 子要素で指定されます。次の例では 、my-domain という名前のセキュリティードメインを設定します。
      <jboss-web>
          <security-domain>my-domain</security-domain>
      </jboss-web>
      これは、WEB-INF/jboss-web.xml 記述子で指定できる多くの設定の 1 つにすぎません。
  2. EJB への必要なアノテーションの追加

    @SecurityDomain および @RolesAllowed アノテーションを使用して、EJB でセキュリティーを設定します。次の EJB コード例は、ゲスト ロールのユーザーによる 他の セキュリティードメインへのアクセスを制限します。
    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 クイックスタートを参照してください。
    注記
    EJB のセキュリティードメインは、jboss-ejb3.xml デプロイメント記述子を使用して設定することもできます。詳細は、「jboss-ejb3.xml デプロイメント記述子の参照」 を参照してください。

手順18.2 EJB3Bean のカスタムプリンシパルにアクセスするように JBoss EAP 6 を設定します

  1. JAAS に従うように ApplicationRealm を設定します。
    <security-realm name="MyDomainRealm">
     <authentication>
       <jaas name="my-security-domain"/>
    </security-realm>
  2. カスタムプリンシパルを使用するように JAAS セキュリティードメインを設定します。
    <security-domain name="my-security-domain" cache-type="default">
       <authentication>
           <login-module code="UsersRoles" flag="required">
               <module-option name="usersProperties" value="file:///${jboss.server.config.dir}/users.properties"/>
               <module-option name="rolesProperties" value="file:///${jboss.server.config.dir}/roles.properties"/>
               <module-option name="principalClass" value="org.jboss.example.CustomPrincipalImpl"/>
           </login-module>
       </authentication>
    </security-domain>
  3. カスタムプリンシパルを JBoss モジュールとしてデプロイします。
  4. を設定しますorg.jboss.as.remotingモジュール (modules/org/jboss/as/remoteing/main/module.xml) は、カスタムプリンシパルを含むモジュールに依存します。
                
    <resources>
        <resource-root path="jboss-as-remoting-7.1.2.Final-redhat-1.jar"/>
        <!-- Insert resources here -->
    </resources>
    
    <dependencies>
        <module name="org.jboss.staxmapper"/>
        <module name="org.jboss.as.controller"/>
        <module name="org.jboss.as.domain-management"/>
        <module name="org.jboss.as.network"/>
        <module name="org.jboss.as.protocol"/>
        <module name="org.jboss.as.server"/>
        <module name="org.jboss.as.security" optional="true"/>
        <module name="org.jboss.as.threads"/>
        <module name="org.jboss.logging"/>
        <module name="org.jboss.modules"/>
        <module name="org.jboss.msc"/>        
        <module name="org.jboss.remoting3"/>
        <module name="org.jboss.sasl"/>
        <module name="org.jboss.threads"/>
        <module name="org.picketbox" optional="true"/>        
        <module name="javax.api" />
        <module name="org.jboss.example" />  <!--FIXME:  dependency on custom principal added here -->
    </dependencies>
  5. 使用するクライアントを設定するorg.jboss.ejb.client.namingjboss-ejb-client.properties ファイルは次のようになります。
    remote.connections=default
    endpoint.name=client-endpoint
    remote.connection.default.port=4447
    remote.connection.default.host=localhost
    remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
    remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
    # The following setting is required when deferring to JAAS
    remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT=false
    
    remote.connection.default.username=admin
    remote.connection.default.password=testing
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.