Hitachi

Cosminexus V11 アプリケーションサーバ Webサービスセキュリティ構築ガイド


3.9.5 JAASログインモジュールの実装時の注意

ここでは,JAASログインモジュールを実装する際の注意事項について説明します。なお,JAASログインモジュールはユーザー側で開発します。一般的なJAASログインモジュールの開発方法については,Sun Microsystems,Inc. が公開しているJAAS認証に関するリファレンスガイドを参照してください。

〈この項の構成〉

(1)  Callbackオブジェクトの生成について

JAASログインモジュールで認証情報を取得するためには,Webサービスセキュリティ機能が提供するコールバックハンドラを使用します。次に,JAASログインモジュール内で必要な処理を示します。

LoginModule.initialize

コールバックハンドラ(javax.security.auth.callback.CallbackHandlerの実装クラス)をクラスメンバ変数に保持します。

LoginModule.login

コールバックハンドラ内で使用するCallbackオブジェクト(javax.security.auth.callback.Callback)の配列を生成して,コールバックハンドラのhandleメソッドを呼び出します。handleメソッドを呼び出したあと,Callbackオブジェクトから認証情報を取り出して認証処理を行います。Callbackオブジェクトの配列は,次の表に示す構成で生成してください。

表3‒4 生成するCallbackオブジェクトの配列

配列番号

Callbackオブジェクト

用途

0

javax.security.auth.callback.NameCallback

ユーザー名の取得

1

javax.security.auth.callback.PasswordCallback

パスワードの取得

2

javax.security.auth.callback.TextInputCallback

パスワード形式の取得

3

javax.security.auth.callback.TextInputCallback

Nonce値の取得

4

javax.security.auth.callback.TextInputCallback

Created値の取得

配列要素の取得方法を次に示します。

0:ユーザー名の取得

ユーザー名はjavax.security.auth.callback.NameCallback.getName()メソッドで取得します。

1:パスワードの取得

パスワードはjavax.security.auth.callback.PasswordCallback.getPassword()メソッドで取得します。パスワード形式がテキスト形式の場合,パスワードテキスト文字配列を返します。パスワード形式がダイジェスト形式の場合,ダイジェスト形式の文字配列を返します。パスワード省略時はnullを返します。

2:パスワード形式の取得

パスワード形式はjavax.security.auth.callback.TextInputCallback.getText()メソッドで取得します。パスワードの形式は次の文字列で返します。

"PasswordText":テキスト形式

"PasswordDigest":ダイジェスト形式

3:Nonce値の取得

Nonce値はjavax.security.auth.callback.TextInputCallback.getText()メソッドで取得します。

4:Created値の取得

Created値はjavax.security.auth.callback.TextInputCallback.getText()メソッドで取得します。

Windowsの場合,JAASログインモジュールのコーディング例については,次のディレクトリに格納されているサンプルを参照してください。

<Application Serverのインストールディレクトリ>/wss/samples/c4web/ の下

usernameToken/rpc/Auth
usernameToken/rpc/client/WEB-INF/classes/localhost
usernameToken/rpc/service/WEB-INF/classes/localhost

(2) ログイン構成ファイルの配置について

Component Container のユーザー定義ファイル(usrconf.properties)に,次のエントリーを追加してください。

java.security.auth.login.config==<ログイン構成ファイルのフルパス名>

ユーザー定義ファイルについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」を参照してください。