-
- 既知のすべての実装クラス:
TextCallbackHandler
public interface CallbackHandlerベースとなるセキュリティ・サービスがユーザー名やパスワードなどの特定の認証データを取得したり、エラーや警告メッセージなどの特定の情報を表示したりできるように、アプリケーションは
CallbackHandlerを実装して、ベースとなるセキュリティ・サービスに渡します。CallbackHandlerはアプリケーション固有の形式で実装されます。 たとえば、グラフィカル・ユーザー・インタフェース(GUI)を持つアプリケーションにおける実装では、ウィンドウをポップアップして、情報を要求するプロンプトや、エラー・メッセージを表示します。 また、要求された情報を、エンド・ユーザーに尋ねるのではなく、別のソースから取得することも選択できます。
ベースとなるセキュリティ・サービスでは、個々のCallbackを
CallbackHandlerに渡すことで、さまざまなタイプの情報を要求できます。CallbackHandlerの実装では、渡されるCallbackによって情報の取得と表示の方法を決定します。 たとえば、ベースとなるサービスでユーザーを認証するためにユーザー名とパスワードが必要な場合は、NameCallbackとPasswordCallbackを使用します。CallbackHandlerでは、ユーザー名とパスワードを順番に入力させるか、1つのウィンドウ内に両方を入力させるかを選択できます。CallbackHandlerクラスのデフォルト実装を指定するには、auth.login.defaultCallbackHandlerセキュリティ・プロパティの値を設定します。セキュリティ・プロパティが
CallbackHandler実装クラスの完全指定名で設定されている場合、LoginContextは指定されたCallbackHandlerをロードして、ベースとなるLoginModuleに渡します。 指定されていない場合、LoginContextはデフォルトのハンドラだけをロードします。すべてのデフォルト・ハンドラの実装では、引数を持たないpublicコンストラクタがなければいけません。
- 導入されたバージョン:
- 1.4
- 関連項目:
セキュリティ・プロパティ
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 修飾子と型 メソッド 説明 voidhandle(Callback[] callbacks)指定のCallback内で要求された情報を取得または表示します。
-
-
-
メソッドの詳細
-
handle
void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException
指定のCallback内で要求された情報を取得または表示します。
handleメソッドの実装では、要求された情報を取得または表示するために渡されたCallbackオブジェクトのインスタンスを確認します。handleメソッド実装の動作の実例を次に示します。 このコード例は見本を示すだけです。 コードを簡単にするために、適切なエラー処理などの詳細は省いています。public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { for (int i = 0; i < callbacks.length; i++) { if (callbacks[i] instanceof TextOutputCallback) { // display the message according to the specified type TextOutputCallback toc = (TextOutputCallback)callbacks[i]; switch (toc.getMessageType()) { case TextOutputCallback.INFORMATION: System.out.println(toc.getMessage()); break; case TextOutputCallback.ERROR: System.out.println("ERROR: " + toc.getMessage()); break; case TextOutputCallback.WARNING: System.out.println("WARNING: " + toc.getMessage()); break; default: throw new IOException("Unsupported message type: " + toc.getMessageType()); } } else if (callbacks[i] instanceof NameCallback) { // prompt the user for a username NameCallback nc = (NameCallback)callbacks[i]; // ignore the provided defaultName System.err.print(nc.getPrompt()); System.err.flush(); nc.setName((new BufferedReader (new InputStreamReader(System.in))).readLine()); } else if (callbacks[i] instanceof PasswordCallback) { // prompt the user for sensitive information PasswordCallback pc = (PasswordCallback)callbacks[i]; System.err.print(pc.getPrompt()); System.err.flush(); pc.setPassword(readPassword(System.in)); } else { throw new UnsupportedCallbackException (callbacks[i], "Unrecognized Callback"); } } } // Reads user password from given input stream. private char[] readPassword(InputStream in) throws IOException { // insert code to read a user password from the input stream }- パラメータ:
callbacks- 取得または表示を要求された情報を含むベースとなるセキュリティ・サービスが提供するCallbackオブジェクトの配列。- 例外:
IOException- 入出力エラーが発生した場合。UnsupportedCallbackException- このメソッドの実装がcallbacksパラメータで指定されたCallbackのうち1つ以上をサポートしない場合。
-
-