新規 JAAS ログイン構成は、管理コンソールを使用して追加および変更できます。変更は
セル・レベル・セキュリティー文書に保存され、
すべての管理対象アプリケーション・サーバーで使用可能です。
始める前に
Java™ Authentication and Authorization Service (JAAS) は、
WebSphere® Application Server のフィーチャーです。JAAS は、WebSphere Application Server の戦略的認証 API の集合体で、
Common Object Request Broker Architecture (CORBA) プログラマチック・ログイン API に代わるものです。
WebSphere Application Server は、JAAS に次のような拡張機能を提供します。
- com.ibm.websphere.security.auth.WSSubject。
com.ibm.websphere.security.auth.WSSubject API は、JAAS 許可モデルを Java Platform, Enterprise Edition (Java EE) リソースに適用されるように拡張します。
- 管理コンソールで JAAS ログインを構成し、このログイン構成をアプリケーション・サーバー構成に保管することができます。しかし、WebSphere Application Server は現在でも、JAAS のデフォルト実装が提供するデフォルトの JAAS ログイン構成フォーマット (プレーン・テキスト・ファイル) をサポートしています。
WebSphere Application Server 構成 API とプレーン・テキスト・ファイル・フォーマットの両方で重複したログイン構成が定義されている場合は、WebSphere Application Server 構成 API で定義された構成が優先されます。
ログイン構成を WebSphere 構成 API で定義することには、次のような利点があります。
- JAAS ログイン構成を定義する際の、ユーザー・インターフェースのサポート
- JAAS ログイン構成の集中管理
- インストール中の JAAS ログイン構成の配布
JAAS バージョン 1.0 の設計上のミスにより、javax.security.auth.Subject.getSubject メソッドは、java.security.AccessController.doPrivileged コード・ブロック内の実行スレッドに関連付けられているサブジェクトを戻しません。
この問題のため、矛盾した動作が起こることがあり、それが望ましくない結果となることがあります。
com.ibm.websphere.security.auth.WSSubject API は、サブジェクトを実行スレッドに関連付ける予備手段を提供します。
- Proxy LoginModule。Proxy LoginModule は実際の LoginModule モジュールをロードします。
デフォルトの JAAS 実装は、クラスをロードする際にスレッド・コンテキスト・クラス・ローダーを使用しません。
LoginModule モジュールは、LoginModule クラス・ファイルがアプリケーション・クラス・ローダー・クラスパス、または
Java 拡張クラス・ローダー・クラスパスにない場合は、ロードできません。このクラス・ローダーの可視性の問題への対応として、
WebSphere Application Server は、スレッド・コンテキスト・クラス・ローダーを使用して JAAS LoginModule をロードするための、プロキシー LoginModule モジュールを提供しています。LoginModule 実装を、このプロキシー LoginModule モジュールとともに、
アプリケーション・クラス・ローダー、または Java 拡張クラス・ローダーのクラスパスに配置する必要はありません。
Proxy LoginModule モジュールを使用しない場合は、
app_server_root/lib/ext/ ディレクトリーに LoginModule モジュールを配置できます。
ただし、このアクションはセキュリティー・リスクがあるためお勧めできません。
Proxy LoginModule モジュールを使用しない場合は、
WAS_HOME/lib/ext/ ディレクトリーに LoginModule モジュールを配置できます。
ただし、このアクションはセキュリティー・リスクがあるためお勧めできません。
Proxy LoginModule モジュールを使用しない場合は、/QIBM/UserData/Java400/ext/ ディレクトリーに LoginModule モジュールを配置して、Java 拡張ディレクトリーのクラスパスに追加できます。
また *PUBLIC *RX 認可をファイルに与えます。
ただし、このファイルを /QIBM/UserData/Java400/ext/ ディレクトリーに追加すると、オペレーティング・システム全体でアクセス可能な Java 拡張ディレクトリーのデフォルトのクラスパスにもそのファイルが追加されることになります。
JAAS ログイン構成は、WebSphere Application Server 構成アプリケーション・プログラミング・インターフェース (API) セキュリティー文書に定義されています。「セキュリティー」>「グローバル・セキュリティー」とクリックします。「Java Authentication and Authorization Service」の下の「アプリケーション・ログイン」をクリックします。次の JAAS ログイン構成が使用可能です。
- ClientContainer
- ログイン構成および LoginModule 実装を定義します。
この実装は WSLogin 構成の実装と似ていますが、
WebSphere Application Server クライアント・コンテナーの要件を強制します。詳しくは、Java 認証・承認サービスの構成エントリー設定を参照してください。
- DefaultPrincipalMapping
- 認証済みの WebSphere Application Server ユーザー ID を、指定されたバックエンド・エンタープライズ情報システム (EIS) 用のユーザー認証データのセット (ユーザー ID とパスワード) にマップするために、通常、Java EE コネクターによって使用される、特別な LoginModule モジュールを定義します。Java EE
コネクターおよび DefaultMappingModule モジュールについての詳細は、Java
EE セキュリティーのセクションを参照してください。
- WSLogin
- 一般にアプリケーションによって使用されるログイン構成
および LoginModule 実装を定義します。
新規 JAAS ログイン構成は、管理コンソールを使用して追加および変更できます。変更は
セル・レベル・セキュリティー文書に保存され、
すべての管理対象アプリケーション・サーバーで使用可能です。実行時に変更を有効にするには、アプリケーション・サーバーの再始動が必要です。
重要: 事前定義 JAAS ログイン構成 (ClientContainer、WSLogin、および DefaultPrincipalMapping など) は、除去または削除しないでください。
これらを削除または除去すると、他のエンタープライズ・アプリケーションが失敗する恐れがあります。
手順
- JAAS ログイン構成を削除します。
- 「セキュリティー」>「グローバル・セキュリティー」とクリックします。
- 「Java Authentication and Authorization Service」の下の「アプリケーション・ログイン」をクリックします。 「アプリケーション・ログイン構成」パネルが表示されます。
- 削除対象であるログイン構成のチェック・ボックスを選択して、「削除」をクリックします。
- 新規 JAAS ログイン構成を作成します。
- 「セキュリティー」>「グローバル・セキュリティー」とクリックします。
- 「Java Authentication and Authorization Service」の下の「アプリケーション・ログイン」をクリックします。
- 「新規」をクリックします。 「アプリケーション・ログイン構成」パネルが表示されます。
- 新規 JAAS ログイン構成のエイリアス名を指定して、「
適用」をクリックします。 この値は、新規の LoginContext コンテキストを作成する際に
javax.security.auth.login.LoginContext 実装に渡すログイン構成の名前です。
変更を保存し、オリジナルの別名の前にノード名を追加するには「適用」をクリックしてください。「OK」をクリックしても、新しい変更内容は security.xml ファイルに保存されません。
- 「追加プロパティー」の下の「JAAS ログイン・モジュール」をクリックします。
- 「新規」をクリックします。
- 「モジュール・クラス名」を指定します。 クラス・ローダーの可視性問題の制限のため、
WebSphere Application Server プロキシーの LoginModule モジュールを指定します。
- Proxy LoginModule モジュールの代行プロパティーとして、LoginModule 実装を指定します。 WebSphere Application Server プロキシー LoginModule のクラス名は、com.ibm.ws.security.common.auth.module.proxy.WSLoginModuleProxy です。
- リストから「認証ストラテジー」を選択して、「適用」をクリックします。
- 「追加プロパティー」の下の「カスタム・プロパティー」をクリックします。 選択した LoginModule の「カスタム・プロパティー」パネルが表示されます。
- delegate という名前の新規プロパティーを作成して、
その値を実際の LoginModule 実装にします。 他のプロパティー (debug など) には、
値「true」を指定してかまいません。
これらのプロパティーは、LoginModule インスタンスの initialize メソッドのオプションとして、LoginModule クラスに渡されます。
- 「保存」をクリックします。
WebSphere Application Server Network Deployment インストール・システムの場合は、
変更を別のノードに伝搬するためのファイル同期操作が実行されることを確認してください。
WebSphere Application Server ディレクトリー構造には、
JAAS ログイン・モジュールを配置できるロケーションがいくつかあります。
次のリストには、JAAS ログイン・モジュールのロケーションが、推奨順に示されています。- 特定の Java Platform, Enterprise Edition (Java EE) アプリケーション用エンタープライズ・アーカイブ (EAR) ファイル内。
EAR ファイル内にログイン・モジュールを配置すると、特定のアプリケーションのみがログイン・モジュールにアクセス可能になります。
- WebSphere Application Server-共有ライブラリー内。
共有ライブラリー内にログイン・モジュールを配置する場合、
モジュールにアクセス可能なアプリケーションを指定する必要があります。
共有ライブラリーについて詳しくは、『共有ライブラリーの管理』を参照してください。
- Java 拡張ディレクトリー内。
JAAS ログイン・モジュールを Java 拡張ディレクトリーに配置すると、すべてのアプリケーションがこのログイン・モジュールを使用できます。
この位置は、WebSphere Application Server for z/OS® または WebSphere Business Integration Server Foundation にはお勧めできません。
クラス・ファイルを /QIBM/UserData/Java400/ext ディレクトリーに配置し、
それを Java 拡張ディレクトリーのクラス・パスに追加します。
また *PUBLIC *RX 認可をファイルに与えます。
ただし、ファイルを /QIBM/UserData/Java400/ext ディレクトリーに追加する場合は、
オペレーティング・システム全体にアクセス可能な Java 拡張ディレクトリーのデフォルトのクラスパスにそのファイルが追加されることになります。
Java 拡張ディレクトリーにログイン・モジュールを配置すると可用性が最大になりますが、
アプリケーション EAR ファイルにログイン・モジュールを配置してください。
同じログイン・モジュールに別のアプリケーションもアクセスする必要がある場合には、
共有ライブラリーの使用を検討してください。
- プレーン・テキスト・ファイルを変更します。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
WebSphere Application Server は、JAAS のデフォルト実装が提供する、プレーン・テキスト・ファイルの
デフォルトの JAAS ログイン構成フォーマットをサポートしています。
ただし、このフォーマットのプレーン・テキスト・ファイルを編集するツールは提供されていません。
JAAS ログイン構成は、app_server_root/properties/wsjaas.conf
ファイルというプレーン・テキスト・ファイルで定義できます。
構文エラーが生じると、JAAS ログイン構成のプレーン・テキスト・ファイルが正しく解析されない場合があります。
そうなると、他のアプリケーションにも障害が起こる恐れがあります。
WebSphere Application Server は、JAAS のデフォルト実装が提供する、プレーン・テキスト・ファイルの
デフォルトの JAAS ログイン構成フォーマットをサポートしています。
ただし、このフォーマットのプレーン・テキスト・ファイルを編集するツールは提供されていません。
profile_root/properties/wsjaas.conf ファイルで JAAS ログイン構成を定義できます。
構文エラーが生じると、JAAS ログイン構成のプレーン・テキスト・ファイルが正しく解析されない場合があります。
そうなると、他のアプリケーションにも障害が起こる恐れがあります。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[z/OS]](../images/ngzos.gif)
認証に Java Authentication and Authorization Service (JAAS) を使用する Java
クライアント・プログラムは、JAAS 構成ファイルを指定して起動する必要があります。
この構成ファイルは、
app_server_root/bin/launchClient.bat ファイルで以下のように設定されています。
set JAAS_LOGIN_CONFIG=-Djava.security.auth.login.config=%install_root%¥properties¥wsjaas_client.conf
Java
クライアント・プログラムの起動に
launchClient.bat ファイルを使用しない場合は、必ず、適切な JAAS 構成ファイルに
-Djava.security.auth.login.config フラグを付けて、Java 仮想マシンに渡すようにしてください。
認証に JAAS を使用する Java
クライアント・プログラムは、JAAS 構成ファイルを指定して起動する必要があります。
この構成ファイルは launchClient
QShell スクリプトに設定されます。
launchClient スクリプトを使用して Java クライアント・プログラムを起動しない場合は、
該当の JAAS 構成ファイルが
-Djava.security.auth.login.config フラグを使用して Java 仮想マシンに渡されることを確認してください。
タスクの結果
新規の JAAS ログイン構成が作成されるか、古い JAAS ログイン構成が除去されます。エンタープライズ・アプリケーションでは、新しく作成された JAAS ログイン構成を、アプリケーション・サーバー・プロセスを再始動しなくても使用できます。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
ただし、
app_server_root/properties/wsjaas.conf
ファイルで定義された新規の JAAS ログイン構成は、自動的に更新されません。変更を有効にするには、アプリケーション・サーバーを
再始動してください。これらの JAAS ログイン構成は特定のノードに固有であり、
他のノードで稼働している別のアプリケーション・サーバーでは使用できません。
ただし、
profile_root/properties/wsjaas.conf ファイルで定義された新規の JAAS ログイン構成は、自動的に更新されません。
変更を有効にするには、アプリケーション・サーバーを
再始動してください。これらの JAAS ログイン構成は特定のノードに固有であり、
他のノードで稼働している別のアプリケーション・サーバーでは使用できません。
次のタスク
エンタープライズ・アプリケーションで使用される新規の JAAS ログイン構成を作成して、カスタム認証を実行します。
これらの新規に定義した JAAS ログイン構成を使用して、プログラマチック・ログインを実行します。