5.2.3. EJB 承認ポリシー
アプリケーションは、JACC (Java Authorization Contract for Containers) の承認モジュールを使用して、カスタム認証および承認検証を実装できます。JBoss EAP 7 では、JACC 承認モジュールは JAAS セキュリティードメインの一部を形成します。
5.2.3.1. elytron サブシステムを使用した JACC の有効化 リンクのコピーリンクがクリップボードにコピーされました!
レガシーセキュリティーサブシステムでの JACC の無効化
アプリケーションサーバーはデフォルトでレガシー security
サブシステムを使用して、JACC ポリシープロバイダーおよびファクトリーを設定します。デフォルト設定は PicketBox から実装へマップします。
Elytron またはアプリケーションサーバーにインストールするその他のポリシーを使用して JACC 設定を管理するには、最初にレガシー security
サブシステムで JACC を無効にする必要があります。これには、以下の管理 CLI コマンドを使用できます。
/subsystem=security:write-attribute(name=initialize-jacc, value=false)
/subsystem=security:write-attribute(name=initialize-jacc, value=false)
この作業を怠ると、次のエラーメッセージがサーバーログに出力されます: MSC000004: Failure during stop of service org.wildfly.security.policy: java.lang.StackOverflowError
JACC ポリシープロバイダーの定義
elytron
サブシステムは、JACC 仕様を基にして組み込みのポリシープロバイダーを提供します。ポリシープロバイダーを作成するには、以下の管理 CLI コマンドを実行します。
/subsystem=elytron/policy=jacc:add(jacc-policy={}) reload
/subsystem=elytron/policy=jacc:add(jacc-policy={})
reload
Web デプロイメントに対する JACC の有効化
JACC ポリシープロバイダーを定義したら、以下のコマンドを実行して、web デプロイメントに対して JACC を有効にできます。
/subsystem=undertow/application-security-domain=other:write-attribute(name=enable-jacc,value=true)
/subsystem=undertow/application-security-domain=other:write-attribute(name=enable-jacc,value=true)
上記のコマンドは、Undertow サブシステムの「その他の」application-security-domain の JACC を有効にします。
「その他の」application-security-domain は、サーバー全体で Elytron を有効にするスクリプトを実行する際に追加されます。セキュリティー設定を参照してください。
サーバー全体で Elytron を有効にするスクリプトを実行していない場合は、最初に以下のコマンドを実行する必要があります。
/subsystem=undertow/application-security-domain=other:add(security-domain=ApplicationDomain)
/subsystem=undertow/application-security-domain=other:add(security-domain=ApplicationDomain)
EJB デプロイメントに対する JACC の有効化
JACC ポリシープロバイダーを定義したら、以下のコマンドを実行して、EJB デプロイメントに対して JACC を有効にできます。
/subsystem=ejb3/application-security-domain=other:write-attribute(name=enable-jacc,value=true)
/subsystem=ejb3/application-security-domain=other:write-attribute(name=enable-jacc,value=true)
上記のコマンドは、EJB サブシステムの「その他の」application-security-domain の JACC を有効にします。
「その他の」application-security-domain は、サーバー全体で Elytron を有効にするスクリプトを実行する際に追加されます。セキュリティー設定を参照してください。
サーバー全体で Elytron を有効にするスクリプトを実行していない場合は、最初に以下のコマンドを実行する必要があります。
/subsystem=ejb3/application-security-domain=other:add(security-domain=ApplicationDomain)
/subsystem=ejb3/application-security-domain=other:add(security-domain=ApplicationDomain)
カスタム Elytron ポリシープロバイダーの作成
パーミッションをチェックするために一部の外部承認サービスと統合したい場合など、カスタム java.security.Policy
が必要なときにカスタムのポリシープロバイダーが使用されます。カスタムポリシープロバイダーを作成するには、java.security.Policy
を実装し、実装でカスタムモジュールを作成およびプラグし、elytron
サブシステムのモジュールから実装を使用します。
/subsystem=elytron/policy=policy-provider-a:add(custom-policy={class-name=MyPolicyProviderA, module=x.y.z})
/subsystem=elytron/policy=policy-provider-a:add(custom-policy={class-name=MyPolicyProviderA, module=x.y.z})
詳細は、開発ガイドのポリシープロバイダープロパティーを参照してください。
ほとんどの場合で、JACC ポリシープロバイダーを Java EE 対応のアプリケーションサーバーの一部として想定どおりに使用できます。