第6章 セキュリティドメインスキーマ

セキュリティドメインスキーマは XML を使用して構築されます。
セキュリティドメインの構造を定義する XML Schema Definition (XSD) は security-beans_1_0.xsd ファイルで宣言されます。ファイルの場所はご使用の JBoss Enterprise Application Platform のバージョンにより異なります。
5.1
jboss-as/lib/jbosssx.jar/ の中の /schema/security-beans_1_0.xsd
5.0、5.0.1
jboss-as/common/lib/jbosssx.jar の中の /schema/security-beans_1_0.xsd
スキーマは使用する JBoss Enterprise Application Platform サーバーに関わらず同じになります。
<application-policy xmlns="urn:jboss:security-beans:1.0" name="">
  <authentication>
    <login-module code="" flag="[required|requisite|sufficient|optional]" extends="">
      <module-option name=""></module-option>
    </login-module>
  </authentication>
  <authorization>
    <policy-module code="" flag="[required|requisite|sufficient|optional]"/>
  </authorization>
  <mapping>
    <mapping-module code="" type="" />
  </mapping>
</application-policy>

図6.1 セキュリティドメイン定義のスキーマ

6.1. セキュリティドメイン要素

<application-policy>
セキュリティドメインの要素は、システム内にどのようにデプロイされているかに関わらず、<application-policy> 要素内に含まれます。この要素は xmlns 属性で宣言されているように XML 名前空間を使用します。
name 属性はアプリケーションによって参照されたセキュリティドメインの名前を設定します。セキュリティドメイン名は java:/jaas コンテキスト下の JNDI でバインドされ、デプロイメント記述子の参照を通じてアプリケーションによってアクセスされます。
<application-policy> 要素には、セキュリティドメインの動作とそれを使用するすべてのアプリケーションを設定する多くの子要素を含むことができます。こうした要素のさらなる詳細は 「<authentication>」「<authorization>」「<mapping>」 に記載されています。

6.1.1. <authentication>

<authentication> 要素には次の子要素が含まれます。
<authentication>
この要素には <login-module> 要素が含まれ、アプリケーションより接続するユーザーの認証時にどの認証モジュールが使用されるかを制御します。
<login-module> 要素が複数存在している場合は、認証が検証される前に満たすべき集団グループの要件を形成します。この集団グループは スタック と呼ばれます。
<login-module>
この要素はアプリケーションが使用できるログインモジュール実装を指定する code 属性を使用し、スタックに存在している各ログインモジュールを解析する方法をアプリケーションに伝える flag 属性を使用します。flag 属性は次の値に対応します。
required
認証が成功するためにはログインモジュールが成功する必要があります。必須の <login-module> が失敗した場合は、認証は失敗します。スタックの残りのログインモジュールは認証の結果に関わらず呼び出されます。
requisite
モジュールは成功する必要があります。成功すれば、認証はスタックまで続きます。モジュールが失敗すれば、直ちに制御はアプリケーションに返します。
sufficient
ログインモジュールは成功する必要はありません。成功すれば、直ちに制御はアプリケーションに返します。モジュールが失敗すると、認証はスタックまで続きます。
optional
ログインモジュールは成功する必要はありません。ログインモジュールが成功するか失敗するかに関わらず、認証はなおスタックまで続きます。
<login-module> にはログインモジュール実装に必要な設定を更に定義する <module-option> 要素のセットが含まれます。
<module-option>
各ログインモジュールには独自の設定オプションのセットがあります。名前の属性はログインモジュールが必要なプロパティを指定し、値は <module-option> 要素の CDATA で宣言されます。モジュールオプションは選択するログインモジュールにより異なります。「モジュールの使用」 にはモジュールオプションに関して詳しく記載されています。

6.1.2. <authorization>

<authorization>
この要素にはアプリケーションユーザーを承認するために使用されるポリシーモジュールとそのモジュールが必要かどうかを定義する <policy-module> 要素が含まれます。
<policy-module> 要素が複数存在している場合は、承認が検証される前に満たすべき集団グループの要件を形成します。この集団グループは スタック と呼ばれます。
<policy-module>
この要素はアプリケーションが使用できるポリシーモジュール実装を指定する code 属性を使用し、ポリシースタックに存在している各ポリシーモジュールを解析する方法をアプリケーションに伝える flag 属性を使用します。flag 属性は次の値に対応します。
required
承認が成功するためにはモジュールが成功する必要があります。必須の <policy-module> が失敗した場合は、承認の試行は失敗します。スタックの残りのモジュールはモジュールの結果に関わらず呼び出されます。
requisite
モジュールは成功する必要があります。成功すれば、承認はスタックまで続きます。失敗すれば、直ちに制御はアプリケーションに返します。
sufficient
ログインモジュールは成功する必要はありません。成功すれば、直ちに制御はアプリケーションに返します。失敗すると、承認はスタックまで続きます。
optional
ログインモジュールは成功する必要はありません。モジュールが成功するか失敗するかに関わらず、承認はなおスタックまで続きます。

6.1.3. <mapping>

<mapping>
この要素には mapping-module 要素のパラメータを定義するために使用される <mapping-module> 要素が含まれます。
<mapping-module> 要素が複数存在している場合は、マッピングが成功する前に満たすべき集団グループの要件を形成します。この集団グループは スタック と呼ばれます。
<mapping-module>
この要素はアプリケーションが使用できるマッピングモジュール実装を指定する code 属性を使用し、ポリシースタックに存在している各マッピングモジュールを解析する方法をアプリケーションに伝える flag 属性を使用します。flag 属性は次の値に対応します。
required
マッピングが成功するためにはモジュールが成功する必要があります。必須の <mapping-module> が失敗した場合は、認証は失敗します。スタックの残りのモジュールは認証の結果に関わらず呼び出されます。
requisite
モジュールは成功する必要があります。成功すれば、マッピングはスタックまで続きます。モジュールが失敗すれば、直ちに制御はアプリケーションに返します。
sufficient
モジュールは成功する必要はありません。成功すれば、直ちに制御はアプリケーションに返します。モジュールが失敗すると、マッピングはスタックまで続きます。
optional
モジュールは成功する必要はありません。モジュールが成功するか失敗するかに関わらず、マッピングはなおスタックまで続きます。