Устранение неполадок AD FS: обнаружение циклов в системе

Циклирование в службах федерации Active Directory (AD FS) происходит, когда сторона-использователь постоянно отклоняет допустимый токен безопасности и перенаправляет обратно в AD FS.

Чтобы предотвратить эту проблему, AD FS реализовал файл cookie обнаружения циклов. По умолчанию AD FS записывает файл cookie в пассивные веб-клиенты с именем MSISLoopDetectionCookie. Этот файл 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 секунд.

PowerShell можно использовать для изменения значения числа выданных маркеров и значения интервала времени.

Set-AdfsProperties -LoopDetectionMaximumTokensIssuedInterval 5  -LoopDetectionTimeIntervalInSeconds 20

Минимальное значение для LoopDetectionMaximumTokensIssuedInterval — 1.

Минимальное значение для LoopDetectionTimeIntervalInSeconds 5.

При тестировании производительности можно также отключить обнаружение циклов.

Set-AdfsProperties -EnableLoopDetection $false

Important

Не следует отключать обнаружение циклов навсегда, так как оно предотвращает пользователей от входа в бесконечные циклы.