當依賴方持續拒絕有效的安全性令牌並重新導向回 Active Directory 同盟服務(AD FS)時,AD FS 中就會發生迴圈。
迴圈偵測cookie
為了避免發生此問題,AD FS 實作循環偵測 Cookie。 根據預設,AD FS 會將 Cookie 寫入名為 MSISLoopDetectionCookie
的 Web 被動用戶端。 此 Cookie 會保存時間戳值,以及核發之令牌數目的值。 這項資訊可讓AD FS追蹤用戶端在特定時間範圍內流覽同盟服務的頻率和次數。
如果被動用戶端在 20 秒內存取同盟服務五次,AD FS 會發生以下錯誤:
MSIS7042: The same client browser session has made '{0}' requests in the last '{1}' seconds. Contact your administrator for details.
進入無限迴圈通常是因為受信應用程式未能成功取用由 AD FS 簽發的令牌。 然後,應用程式會重複地將被動用戶端傳回至 AD FS 以獲取新的令牌。 AD FS 每次都會向被動客戶端發出新的令牌,並在 20 秒內將請求限制為 5 次。
調整迴圈偵測 Cookie
您可以使用 PowerShell 來變更所發行令牌數目和時間範圍值的值。
Set-AdfsProperties -LoopDetectionMaximumTokensIssuedInterval 5 -LoopDetectionTimeIntervalInSeconds 20
LoopDetectionMaximumTokensIssuedInterval
的最小值為 1。
LoopDetectionTimeIntervalInSeconds
的最小值為 5。
當您執行效能測試時,您也可以停用循環偵測。
Set-AdfsProperties -EnableLoopDetection $false
這很重要
請勿永久停用迴圈偵測,因為它可防止使用者進入無限循環狀態。