15.2. Jakarta 承認セキュリティーの設定
Jakarta Authorization を設定するには、適切なモジュールでセキュリティードメインを設定し、必須のパラメーターが含まれるよう jboss-web.xml を編集する必要があります。
Jakarta Authentication のセキュリティードメインへの追加
Jakarta Authorization サポートをセキュリティードメインに追加するには、必要な フラグセットを使用して、Jakarta Authorization 承認ポリシーをセキュリティードメインの承認スタックに追加します。以下は、Jakarta Authorization がサポートされるセキュリティードメインの例です。ただし、セキュリティードメインは直接 XML を変更せずに、管理コンソールまたは管理 CLI で設定することが推奨されます。
例: Jakarta Authentication のあるセキュリティードメイン
<security-domain name="jacc" cache-type="default">
<authentication>
<login-module code="UsersRoles" flag="required">
</login-module>
</authentication>
<authorization>
<policy-module code="JACC" flag="required"/>
</authorization>
</security-domain>
Jakarta Authentication を使用するように Web アプリケーションを設定
jboss-web.xml は デプロイメントの WEB-INF/ ディレクトリーに存在し、Web コンテナーに対する追加の JBoss 固有の設定を格納し、上書きします。Jakarta Authorization が有効になっているセキュリティードメインを使用するには、<security-domain> 要素が含まれるようにし、さらに <use-jboss-authorization> 要素を true に設定する必要があります。以下の XML は、上記の Jakarta Authorization セキュリティードメインを使用するように設定されています。
例: Jakarta Authentication セキュリティードメインの使用
<jboss-web>
<security-domain>jacc</security-domain>
<use-jboss-authorization>true</use-jboss-authorization>
</jboss-web>
Jakarta Authentication を使用するように akarta Enterprise Beans アプリケーションを設定
セキュリティードメインと Jakarta Authorization を使用するよう Jakarta Enterprise Beans を設定する方法は Web アプリケーションとは異なります。Jakarta Enterprise Beans の場合、ejb-jar.xml 記述子にてメソッドまたはメソッドのグループ上でメソッドパーミッションを宣言できます。<ejb-jar> 要素内では、すべての子 <method-permission> 要素に、ロールの Jakarta Authorization についての情報が含まれます。詳細は、設定例を参照してください。EJBMethodPermission クラスは Jakarta EE API の一部であり、Class EJBMethodPermission に記載されています。
例: Jakarta Enterprise Beans の Jakarta Authentication 方法のパーミッション
<ejb-jar>
<assembly-descriptor>
<method-permission>
<description>The employee and temp-employee roles can access any method of the EmployeeService bean </description>
<role-name>employee</role-name>
<role-name>temp-employee</role-name>
<method>
<ejb-name>EmployeeService</ejb-name>
<method-name>*</method-name>
</method>
</method-permission>
</assembly-descriptor>
</ejb-jar>
Web アプリケーションと同様にセキュリティードメインを使用して Jakarta Enterprise Beans の認証および承認メカニズムを指定することも可能です。セキュリティードメインは <security> 子要素の jboss-ejb3.xml 記述子に宣言されます。セキュリティードメインの他に、Enterprise Beans が実行されるプリンシパルを変更する <run-as-principal> を指定することもできます。
例: Jakarta Enterprise Beans でのセキュリティードメイン宣言
<ejb-jar>
<assembly-descriptor>
<security>
<ejb-name>*</ejb-name>
<security-domain>myDomain</security-domain>
<run-as-principal>myPrincipal</run-as-principal>
</security>
</assembly-descriptor>
</ejb-jar>
elytron サブシステムを使用した Jakarta Authorization の有効化
レガシーセキュリティーサブシステムでの Jakarta Authentication の無効化
デフォルトでは、アプリケーションサーバーはレガシー security サブシステムを使用して、ポリシープロバイダーおよびファクトリーの Jakarta Authorization を設定します。デフォルト設定は PicketBox から実装へマップします。
Elytron を使用して Jakarta Authorization 設定、またはアプリケーションサーバーにインストールするその他のポリシーを管理するには、最初にレガシー security サブシステムで Jakarta Authorization を無効にする必要があります。これには、以下の管理 CLI コマンドを使用できます。
/subsystem=security:write-attribute(name=initialize-jacc, value=false)
この作業を怠ると、次のエラーメッセージがサーバーログに出力されます: MSC000004: Failure during stop of service org.wildfly.security.policy: java.lang.StackOverflowError
Jakarta Authentication ポリシープロバイダーの定義
elytron サブシステムは、Jakarta Authorization 仕様をベースとした組み込みポリシープロバイダーを提供します。ポリシープロバイダーを作成するには、以下の管理 CLI コマンドを実行します。
/subsystem=elytron/policy=jacc:add(jacc-policy={})
reloadWeb デプロイメントへの Jakarta Authentication の有効化
Jakarta Authorization ポリシープロバイダーを定義したら、以下のコマンドを実行して、Web デプロイメントの Jakarta Authorization を有効にできます。
/subsystem=undertow/application-security-domain=other:add(security-domain=ApplicationDomain,enable-jacc=true)
上記のコマンドは、jboss-web.xml ファイルに指定がない場合に、アプリケーションのデフォルトのセキュリティードメインを定義します。すでに application-security-domain が定義されている場合、以下のコマンドを実行すると JACC を有効にすることができます。
/subsystem=undertow/application-security-domain=my-security-domain:write-attribute(name=enable-jacc,value=true)
Jakarta Enterprise Beans デプロイメントへの Jakarta Authentication の有効化
Jakarta Authorization ポリシープロバイダーを定義したら、以下のコマンドを実行して、Jakarta Enterprise Beans デプロイメントの Jakarta Authorization を有効にできます。
/subsystem=ejb3/application-security-domain=other:add(security-domain=ApplicationDomain,enable-jacc=true)
上記のコマンドは、Jakarta Enterprise Beans のデフォルトのセキュリティードメインを定義します。application-security-domain がすでに定義されている場合、以下のようにコマンドを実行して Jakarta Authorization を有効にする必要があります。
/subsystem=ejb3/application-security-domain=my-security-domain:write-attribute(name=enable-jacc,value=true)
カスタム Elytron ポリシープロバイダーの作成
パーミッションをチェックするために一部の外部承認サービスと統合したい場合など、カスタム java.security.Policy が必要なときにカスタムのポリシープロバイダーが使用されます。カスタムポリシープロバイダーを作成するには、java.security.Policy を実装し、実装でカスタムモジュールを作成およびプラグし、elytron サブシステムのモジュールから実装を使用します。
/subsystem=elytron/policy=policy-provider-a:add(custom-policy={class-name=MyPolicyProviderA, module=x.y.z})詳細は ポリシープロバイダープロパティー を参照してください。
ほとんどの場合で、Jakarta Authorization ポリシープロバイダーを Jakarta EE 対応のアプリケーションサーバーの一部として想定どおりに使用できます。