コールバックの作成

ProviderFactory.Callback は、製品リポジトリへのアクセスが必要になったときに、 ClearQuest® CM API Provider によってクライアントからユーザー認証を要求されるインターフェイスです。 また、ClearQuest 用に特化した StpProvider.StpCallback というサブプロバイダ インターフェイスもあります。

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


フィードバック