以下の 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 情報を参照してください。