以下の MyCallback() クラスは、ユーザー認証情報 (ドメイン、ユーザー ログイン名、パスワード) を作成し、プロバイダに戻します。
// Callback class, needed to create a provider. private static class MyCallback implements Callback { // Get a WVCM Authentication object. // This implementation of the authentication // callback returns the specified username and password. // The Provider calls getAuthentication to authenticate the current user. public Authentication getAuthentication(final String realm, int retryCount) { if (retryCount>0) throw UnsupportedOperationException("Bad credentials"); return new Authentication() { public String loginName() { return "<the_domain>\\<the_username>"; } public String password() { return "<the_password>"; } }; } }
各 Provider インスタンスには、1 つの Provider.Callback オブジェクト が与えられ、このオブジェクトを使用して、その Provider インスタンスを介してクライアントがアクセス するリポジトリ用の認証が取得されます。
realm 引数は、認証が要求される コンテキスト (例えば、サーバー URL やリポジトリ名) を示す 文字列です。この文字列のフォーマットは、サブプロバイダごとに異なり、 ユーザーへのニーモニックとしての表示を目的としています。
retryCount は、リポジトリへの認証を試行する回数を指定します。
この例では、realm 引数と retryCount 引数は 使用されません。しかし、認証再試行に制限はなく、retryCount が設定されているか、getAuthentication メソッドが例外をスローしない限り、失敗の後でもプロバイダは繰り返し認証を取得しようとするので、クライアント アプリケーションは、retryCount の試行を少ない回数に制限するべきです。
クライアント アプリケーションでは、 ユーザーのログイン名とパスワードを収集するためのログイン ウィンドウ を認証コールバックが開くようにできます。そのウィンドウで realm 引数を 提示し、どの製品リポジトリにユーザーがログインするのか (例えば、サーバー URL またはユーザー データベース) を示すことができます。 このオプションは、製品リポジトリが異なる場合には異なるユーザー名とパスワードを使用する ようなユーザーの場合に有用です。
Callback は、クライアントが要求を行う先の、異なるレルムのそれぞれについて、プロバイダを使用している間に、 呼び出されます。ClearQuest CM API Provider に渡される Callback に関する要件について詳しくは、StpProvider クラスに関する Javadoc 情報を参照してください。