本章では、WebOTX ESBでセキュリティ機能を利用する場合の環境設定について説明します。
環境設定が必要なセキュリティ機能はSECUREMASTER連携とカスタム認証連携です。
SECUREMASTER/AccessControlPlugInオプション (認証API)を利用し、SECUREMASTER製品が提供する認証・認可機能を利用することができます。
下図はWebOTX ESBとSECUREMASTER製品との関係を表した図です。
【図9.1.1a】WebOTX ESBとSECUREMASTER製品の関係図
以下に設定の手順を示します。
SECUREMASTER製品の手順に従い、環境を構築します。
環境構築後、SECUREMASTER/AccessControlPlugInオプション から、認証・認可に必要なjarファイルとsm_api_conf.xml.sampleを取得し、SECUREMASTER/EnterpriseAccessManagerでアクセス制御ポリシーファイルを生成します。
ESBがサポートするSECUREMASTER/AccessControlPlugInオプションのバージョンとjarファイルは下記に示すとおりです。
SECUREMASTER/AccessControlPlugInjarファイルと設定ファイルを認証・認可を利用するドメインの下記のフォルダに配置します。
設定ファイルのデフォルト名はsm_api_conf.xmlです。設定ファイル名を変更する場合、ファイル名を別途設定する必要があります。詳細は9.1.2. その他の設定を参照してください。
配置したjarをWebOTX ESBにロードさせるため、ドメインを再起動します。
再起動後にSECUREMASTER連携機能をONにします。以下に示す2通りの方法があります。
Java認証・承認サービス(JavaTM Authentication and Authorization Service:JAAS)に従ったLoginModuleを実装することでESBに独自の認証モジュールを組み込むことができるようになります。
設定手順は次のとおりです。
まず、JAASの仕様に従い、LoginModuleを作成します。
次にLoginModuleを含んだjarファイルを作成し、認証を利用するドメインの下記のフォルダに配置します。
${INSTANCE_ROOT}/lib
JAAS ログイン構成ファイルの設定を行います。${INSTANCE_ROOT}/config/login.confに設定を追加します。
ESBDefaultCustomRealmエントリの設定に作成したクラス名を追加してください。
以下はcom.nec.webotx.jbi.security.custom.CUSTOMLoginModuleクラスを追加した場合の例です。
必要に応じて${INSTANCE_ROOT}/config/server.policyに設定を追加します。
LoginModule実行時に権限が不足している旨のメッセージがログに出力された場合は適宜権限を追加してください。
認証後にSubjectにPrincipalを追加する場合は以下を追加します。
上記設定が完了したら、ドメインを再起動します。
JAAS ログイン構成ファイル ${INSTANCE_ROOT}/config/login.confにエントリの設定を追加します。
${INSTANCE_ROOT}/config/server.policyに以下のように権限を追加してください。
grant {
permission javax.security.auth.AuthPermission "createLoginContext.<login.confに追加したエントリ名>";
};
上記設定後、ドメインを再起動します。
認証情報(Credential)と認証済情報(Principal)はjavax.security.Subjectクラスに追加され、MessageExchangeにプロパティとして格納されます。
認証情報はPrivateCredentialsメソッドで取得できます。認証済情報はgetPrincipalメソッドで取得できます。
エンドポイント認証とクライアント認証はそれぞれ別々のプロパティに格納されます。
ハンドラから認証情報(PrivateCredentials)を扱う場合、${INSTANCE_ROOT}/config/server.policyに設定を追加する必要があります。
以下は認証情報の読み込み許可の設定を示します。
PrivateCredentialsはクライアントのパスワードを含む認証情報が含まれていますので、server.policyに追加する場合には適切な範囲に権限を与えるよう十分注意してください。