下列 MyCallback() 類別會建立使用者鑑別資訊(網域、使用者登入名稱和密碼),然後傳回給提供者。
// 建立提供者所需的「回呼」類別。專用 static 類別 MyCallback 實作「回呼」 { // 取得一個「WVCM 鑑別」物件。 // 這個鑑別的實作 // 回呼傳回指定的使用者名稱和密碼。 //「提供者」呼叫 getAuthentication 來鑑別現行使用者。 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.Callback 物件,用來取得用戶端透過該「提供者」實例存取的任何儲存庫認證。
realm 引數是一個字串,其會識別要求其鑑別的環境定義(例如:伺服器 URL 或儲存庫名稱)。字串的格式會視子提供者而有所不同,其目的是要顯示給使用者作為助記鍵。
retryCount 指定嘗試向儲存庫鑑別的次數。
在本例中並未使用 realm 和 retryCount 引數。不過,用戶端應用程式應該將 retryCount 嘗試限制為較少次數,因為鑑別重試沒有限制次數,提供者在失敗之後會不斷地嘗試取得鑑別,除非設定 retryCount,或直到 getAuthentication 方法擲出異常狀況為止。
在用戶端應用程式中,鑑別回呼可以開啟一個登入視窗,以收集使用者登入名稱和密碼。realm 引數可以在視窗中呈現,以顯示使用者要登入哪一個產品儲存庫(例如:伺服器 URL 或使用者資料庫)。如果使用者對不同的產品儲存庫有不同的使用者名稱和密碼,這個選項會很有用。
在使用「提供者」時,用戶端對其發出要求的每一個不同的網域範圍都會呼叫「回呼」。請參閱 Javadoc 資訊的 StpProvider 類別,以瞭解關於傳給「ClearQuest CM API 提供者」的「回呼」需求詳細資訊。