Callback erstellen

Ein ProviderFactory.Callback ist ein Interface, über das der Rational-CM-API-Provider Benutzerberechtigungen vom Client anfordert, wenn diese für den Zugriff auf ein Produkt-Repository erforderlich sind. Darüber hinaus gibt es das spezielle Subinterface StpProvider.StpCallback für ClearQuest und ClearCase.

Die folgende Klasse MyCallback() erstellt Benutzerauthentifizierungsdaten (Domäne, Anmeldename des Benutzers und Kennwort) und kehrt zum Provider zurück.

// Für die Erstellung eines Providers erforderliche Callback-Klasse 
private static class MyCallback implements Callback 
{
     // Abrufen eines WVCM-Authentifizierungsobjekts.
     // Diese Implementierung des Authentifizierungs-Callback
     // gibt den angegebenen Benutzernamen und das angegebene Kennwort zurück.

     // Der Provider ruft getAuthentication auf, um den aktuellen Benutzer zu authentifizieren.
     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>"; }
               };
          }
}

Jeder Providerinstanz wird ein Provider.Callback-Objekt zugeordnet, mit dem die Berechtigungsnachweise für jedes Repository abgerufen werden, auf das der Client über diese Providerinstanz zugreift.

Das Argument realm ist eine Zeichenfolge (z. B. ein Server-URL oder ein Repository-Name), die den Kontext bezeichnet, für den die Authentifizierung angefordert wird. Das Format der Zeichenfolge ist vom jeweiligen Subprovider abhängig und wird dem Benutzer als mnemonisches Zeichen angezeigt.

Der retryCount gibt die Anzahl der Versuche für die Authentifizierung gegenüber dem Repository an.

In diesem Beispiel wurden die Argumente realm und retryCount nicht verwendet. Clientanwendungen sollten die Anzahl der retryCount-Versuche jedoch gering halten, denn es gibt keinen voreingestellten Grenzwert für die Wiederholung der Authentifizierungsversuche. Ein Provider versucht die Authentifizierung nach einem Fehler so lange zu wiederholen, bis die Methode getAuthentication eine Ausnahme auslöst.

Anmerkung: Die Domäne kann Teil eines Benutzernamens sein. Für eine Rational-ClearCase-Anmeldung bei Servern unter Windows ist es erforderlich, dass die Domäne im Benutzernamen enthalten ist.

In einer Clientanwendung kann der Authentifizierungs-Callback ein Anmeldedialogfenster öffnen, um den Anmeldenamen und das Kennwort des Benutzers zu erfassen. In dem Dialogfenster kann dem Benutzer das Argument realm angezeigt werden (z. B. ein Server-URL oder eine Benutzerdatenbank), damit er sieht, für welches Produkt-Repository er sich anmeldet. Diese Option ist hilfreich, wenn Benutzer für verschiedene Produkt-Repositorys unterschiedliche Benutzernamen und Kennwörter verwenden.

Der Callback wird für jeden Realm aufgerufen, an den der Client während der Verwendung des Providers Anforderungen sendet. In den Javadoc-Informationen zur Klasse StpProvider finden Sie Details zu den Anforderungen an einen Callback, der an einen Rational-CM-API-Provider übergeben wird.