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

[目次][用語][索引][前へ][次へ]

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

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

<この項の構成>
(1)  Callbackオブジェクトの生成について
(2) ログイン構成ファイルの配置について

(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==<ログイン構成ファイルのフルパス名>

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