3.9.4 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ログインモジュールのコーディング例については,次のディレクトリに格納されているサンプルを参照してください。
- <Cosminexusのインストールディレクトリ>/wss/samples/ の下
usernameToken/rpc/Auth
usernameToken/rpc/client/WEB-INF/classes/localhost
usernameToken/rpc/service/WEB-INF/classes/localhost
(2) ログイン構成ファイルの配置について
Cosminexus Component Container のユーザー定義ファイル(usrconf.properties)に,次のエントリーを追加してください。
java.security.auth.login.config==<ログイン構成ファイルのフルパス名>
ユーザー定義ファイルについては,マニュアル「Cosminexus リファレンス 定義編」を参照してください。