Java Authorization Contract for Containers (JACC)

Liberty は、デフォルトの許可に加えて、Java™ Authorization Contract for Containers (JACC) 仕様に基づく許可をサポートします。 Liberty でセキュリティーが有効になっていると、JACC プロバイダーが指定されない限り、デフォルトの許可が使用されます。

このタスクについて

JACC により、アプリケーション・サーバーでの許可の管理に、サード・パーティーのセキュリティー・プロバイダーを使用できます。 デフォルトの許可では特別な設定は必要なく、デフォルトの許可エンジンがすべての許可の決定を行います。 ただし、JACC プロバイダーが Liberty で使用されるように構成され、設定された場合、すべてのエンタープライズ Bean および Web の許可の決定は、JACC プロバイダー が代行します。 JACC は、アプリケーション・サーバーと許可ポリシー・モジュールとの間のセキュリティー契約を定義します。 これらの契約で、許可プロバイダーのインストール方法、構成方法、およびアクセス判断での使用方法が指定されます。 jacc-1.5 フィーチャーを Liberty サーバーに追加するには、サード・パーティーの JACC プロバイダーを追加しますが、このプロバイダーは Liberty には含まれていません。

Liberty サーバーで提供される com.ibm.wsspi.security.authorization.jacc.ProviderService インターフェースを実装することにより、 Java EE アプリケーションのカスタム許可決定を行う JACC プロバイダーを開発できます。 JACC 仕様である JSR 115 は、許可プロバイダー用のインターフェースを定義しています。 Liberty サーバーで、JACC プロバイダーをユーザー・フィーチャーとしてパッケージする必要があります。 そのフィーチャーは com.ibm.wsspi.security.authorization.jacc.ProviderService インターフェースを実装する必要があります。

手順

  1. OSGi バンドル・プロジェクト を作成して、Java クラスを開発します。
    プロジェクトにコンパイル・エラーがある可能性があります。 これらのエラーを修正するには、javax.security.jacc および com.ibm.wsspi.security.authorization.jacc の 2 つのパッケージをインポートする必要があります。

    ファイル MANIFEST.MF を編集して、欠落しているパッケージをインポートします。

    Manifest-Version: 1.0
    Service-Component: OSGI-INF/myjaccExampleComponent.xml,
    Bundle-ManifestVersion: 2
    Bundle-Name: com.example.myjaac.osgiBundle
    Bundle-SymbolicName: com.example.myjaac.osgiBundle
    Bundle-Version: 1.0.0
    Bundle-RequiredExecutionEnvironment: JavaSE-1.7
    Import-Package: com.ibm.wsspi.security.authorization.jacc;version="1.0.0",
    javax.security.jacc;version="1.5.0"

    サービス・コンポーネント XML の例 (myjaccExampleComponent.xml) を以下に示します。

    <?xml version="1.0" encoding="UTF-8"?>
    <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" 
     name="TestPolicyServiceProvider">
        <implementation class="com.example.myjaac.osgiBundle.TestPolicyServiceProvider"/>
        <property name="javax.security.jacc.policy.provider" type="String" value=""/>
        <property name="javax.security.jacc.PolicyConfigurationFactory.provider" type="String" value=""/>
        <service>
            <provide interface="com.ibm.wsspi.security.authorization.jacc.ProviderService"/>
        </service>
    </scr:component>
  2. Liberty フィーチャー・プロジェクトを作成して、フィーチャー・マニフェスト・ファイル内の Subsystem-Content の下で、前の OSGi バンドルをユーザー Liberty フィーチャーに追加します。
  3. フィーチャー・マニフェストを詳細化して、必要な OSGi サブシステム・コンテンツを追加します: com.ibm.ws.javaee.jacc.1.5; version="[1,1.0.200)"; location:="dev/api/spec/"
    Subsystem-ManifestVersion: 1.0
    IBM-Feature-Version: 2
    IBM-ShortName: jacc15CICSLiberty-1.0
    Subsystem-SymbolicName: com.example.myjaac.libertyFeature;visibility:=public
    Subsystem-Version: 1.0.0
    Subsystem-Type: osgi.subsystem.feature
    Subsystem-Content: com.example.myjaac.osgiBundle;version="1.0.0",
     com.ibm.ws.javaee.jacc.1.5;version="[1,1.0.200)";location:="dev/api/spec/"
    Manifest-Version: 1.0

    もう 1 つサブシステム・コンテンツを追加する必要がある場合は、コンテンツを入力する前に少なくとも 1 つの space を追加する必要があります。 spaceを追加しない場合、 CICS は java.lang.IllegalArgumentExceptionを返します。

  4. Liberty フィーチャー・プロジェクトを Liberty フィーチャー (ESA) ファイルとしてエクスポートします。
  5. ESA ファイルを zFS に FTP でファイル転送します。
  6. installUtility コマンドを使用して、ESA ファイルをインストールします。
    ./wlpenv installUtility install myFeature.esa
  7. jacc-1.5 フィーチャー、および JACC プロバイダーを含む ESA ファイルをユーザー・フィーチャーとして server.xmlに追加します。
    <feature>jacc-1.5</feature>
    <feature>usr:jacc15CICSLiberty-1.0</feature>