本文件已封存並已停止維護。

ACS 重試方針

發佈時間: 2013年1月

更新日期: 2015年7月

適用於: Azure

Microsoft Azure Active Directory 存取控制服務 (也稱為「存取控制服務」或 ACS) 支援許多不同的權杖發行和管理端點,供用戶端傳送權杖要求。本主題定義當權杖要求失敗時實作重試邏輯的指導方針。

傳回 HTTP 500 系列錯誤碼的權杖要求失敗通常可回應重試。在某些案例中,用戶端是自動向 ACS 提出要求的應用程式或服務。在其他案例中,例如使用 WS-同盟通訊協定的 Web 型同盟,用戶端是網頁瀏覽器,使用者必須手動重試作業。本主題涵蓋用戶端是應用程式或服務時的錯誤處理案例。

這些案例包括:

下列指導方針說明如何在錯誤處理案例中實作重試邏輯。

當 ACS 傳回 HTTP 500 系列錯誤時,強烈建議使用重試邏輯。下列清單包含一般 HTTP 500 系列錯誤的範例。

  • HTTP 錯誤 500 - 內部伺服器錯誤

  • HTTP 錯誤 502 - 不正確的閘道

  • HTTP 錯誤 503 - 服務無法使用

  • HTTP 錯誤 504 – 閘道逾時

雖然可以在重試邏輯中列舉個別的 HTTP 代碼,但只要傳回任何 HTTP 500 系列錯誤,就足夠叫用重試邏輯。

重試邏輯應該由 HTTP 錯誤碼觸發,例如 HTTP 504 (外部伺服器逾時),而不是由 ACS 錯誤碼觸發,例如 ACS90005。ACS 錯誤碼只供參考,可能會變動。

當傳回 HTTP 400 系列錯誤碼時,通常不建議使用重試邏輯。來自 ACS 的 400 系列 HTTP 錯誤回應碼表示要求無效,需要修正。例外的是錯誤碼 429 (「太多要求」),表示命名空間已有一段很長時間超出權杖要求率限制。對於 429 錯誤,以倒數計時器重試可以消除當前的權杖要求積存,直到系統管理員有空檢閱並修正命名空間工作量分配為止。如需詳細資訊,請參閱ACS 服務限制

當用戶端收到 HTTP 500 系列錯誤時,用戶端應該等待一段指定的時間再重試要求。為了獲得最佳結果,建議隨著後續每一次重試而增加這段時間。此方法可快速解決暫時性錯誤,同時針對需要更久時間才能解決的暫時性網路或伺服器問題,將要求率最佳化。

例如,使用指數型倒數計時器,重試之前的延遲隨著每個執行個體而以指數方式增加,例如重試 1:1 秒,重試 2:2 秒,重試 3:4 秒,以此類推。

根據使用者經驗需求,調整重試次數和每次重試之間的時間。不過,建議在一段五分鐘的時間內最多重試五次。由於逾時而造成的失敗需要更久的時間才能解決。

使用 ACS 管理服務來執行建立或刪除作業時,例如建立新的信賴憑證者應用程式或刪除規則,在執行作業之前,重試邏輯應該查詢項目是否存在。在某些情況下,例如傳遞伺服器回應時發生的暫時性網路失敗,即使用戶端收到錯誤回應,建立或刪除作業仍會成功。

如果未檢查項目是否存在就重試建立作業,則可能會建立重複的項目。此外,如果項目必須是唯一的,系統可能會傳回 HTTP 400 錯誤。

如果未檢查項目是否存在就重試刪除作業,則系統找不到項目時可能會傳回 HTTP 400 錯誤。

另請參閱

顯示: