Active Directory フェデレーションサービス (AD FS) でのループ状態は、依頼先が有効なセキュリティ トークンを連続的に拒否し、AD FS にリダイレクトする際に発生します。
ループ検出クッキー
この問題が発生するのを防ぐために、AD FS はループ検出 Cookie を実装しました。 既定では、AD FS は MSISLoopDetectionCookie
という名前の Web パッシブ クライアントに Cookie を書き込みます。 この Cookie は、タイムスタンプ値と、発行されたトークンの数の値を保持します。 この情報により、AD FS は、特定の期間にクライアントがフェデレーション サービスにアクセスした頻度と回数を追跡できます。
パッシブ クライアントが 20 秒以内に 5 回トークンのフェデレーション サービスにアクセスすると、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
重要
ユーザーが無限ループ状態に入らないようにするため、ループ検出を永続的に無効にしないでください。