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 インターフェースを実装する必要があります。
手順
- 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>
- Liberty フィーチャー・プロジェクトを作成して、フィーチャー・マニフェスト・ファイル内の Subsystem-Content の下で、前の OSGi バンドルをユーザー Liberty フィーチャーに追加します。
- フィーチャー・マニフェストを詳細化して、必要な 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を返します。
- Liberty フィーチャー・プロジェクトを Liberty フィーチャー (ESA) ファイルとしてエクスポートします。
- ESA ファイルを zFS に FTP でファイル転送します。
-
installUtility コマンドを使用して、ESA ファイルをインストールします。
./wlpenv installUtility install myFeature.esa
-
jacc-1.5 フィーチャー、および JACC プロバイダーを含む ESA ファイルをユーザー・フィーチャーとして server.xmlに追加します。
<feature>jacc-1.5</feature>
<feature>usr:jacc15CICSLiberty-1.0</feature>