コールバックの作成

ProviderFactory.Callback は、製品リポジトリへのアクセスが必要になったときに、 Rational® CM API Provider によってクライアントからユーザー認証を要求されるインターフェイスです。 また、ClearQuest® と ClearCase® 用に特化した 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 の試行を少ない回数に制限するべきです。

注: ユーザー名の一部としてドメインが使用されることがあります。 Rational ClearCase ログインは、 Windows® 上のサーバー用のユーザー名の一部として、ドメインを必要とします。

クライアント アプリケーションでは、 ログイン名とパスワードをユーザーから収集するためのログイン ダイアログ ボックス を認証コールバックが開くようにできます。そのダイアログ ボックスで realm 引数を ユーザーに提示し、どの製品リポジトリにユーザーがログインするのか (たとえば、サーバー URL またはユーザー データベース) を示すことができます。 このオプションは、製品リポジトリが異なる場合には異なるユーザー名とパスワードを使用する ようなユーザーの場合に有用です。

Callback は、クライアントが要求を行う先の、異なるレルムのそれぞれについて、プロバイダを使用している間に、 呼び出されます。Rational CM API Provider に渡される Callback に関する要件について詳しくは、StpProvider クラスに関する Javadoc 情報を参照してください。


フィードバック