AD FS トラブルシューティング-ループ検出AD FS Troubleshooting - Loop Detection

AD FS のループは、証明書利用者が有効なセキュリティトークンを継続的に拒否し、AD FS にリダイレクトするときに発生します。Looping in AD FS occurs when a relying party continuously rejects a valid security token and redirects back to AD FS.

これが起こらないように、AD FS では、ループ検出クッキーと呼ばれるものが実装されています。To prevent this from happening, AD FS has implemented what is called a loop detection cookie. 既定では、AD FS はMSISLoopDetectionCookieという名前の web パッシブクライアントに cookie を書き込みます。By default, AD FS writes a cookie to web passive clients named MSISLoopDetectionCookie. この cookie には、タイムスタンプ値と、発行されたトークンの数が格納されます。This cookie holds a timestamp value and a number of tokens issued value. これにより、AD FS が特定の期間内にクライアントがフェデレーションサービスにアクセスした頻度と回数を追跡できます。This allows AD FS to keep track of how often and how many times a client has visited the Federation Service within a specific timespan.

パッシブクライアントがトークンのフェデレーションサービスを20秒以内に5回アクセスする場合、AD FS は次のエラーをスローします。If a passive client visits the Federation Service for a token five (5) times within 20 seconds, AD FS throws the following error:

MSIS7042: 同じクライアントブラウザーセッションが {0} 最後の ' ' 秒間に ' ' 要求を行いました {1} 。詳細については、管理者に問い合わせてください。MSIS7042: The same client browser session has made '{0}' requests in the last '{1}' seconds. Contact your administrator for details.

無限ループに入るのは、多くの場合、AD FS によって発行されたトークンを正常に使用できない、正常に動作していない証明書利用者アプリケーションによって発生し、アプリケーションが新しいトークンに対して AD FS にパッシブクライアントを繰り返し送信しているためです。Entering into infinite loops is often caused by a misbehaving relying party application that is not successfully consuming the token issued by AD FS, and the application is sending the passive client back to AD FS, repeatedly, for a new token. AD FS は、20秒以内に5つの要求を超えない限り、パッシブクライアントに毎回新しいトークンを発行します。AD FS is will issue the passive client a new token each time, as long as they do not exceed 5 requests within 20 seconds.

PowerShell を使用して、発行されるトークンの数と timespan 値を変更できます。You can use PowerShell to change the number of tokens issued value and the timespan value.

Set-AdfsProperties -LoopDetectionMaximumTokensIssuedInterval 5  -LoopDetectionTimeIntervalInSeconds 20

LoopDetectionMaximumTokensIssuedIntervalの最小値は1です。The minimum value for LoopDetectionMaximumTokensIssuedInterval is 1.

LoopDetectionTimeIntervalInSecondsの最小値は5です。The minimum value for LoopDetectionTimeIntervalInSeconds is 5.

また、パフォーマンステストを実行するときにループ検出を無効にすることもできます。You can also disable loop detection when you are doing performance testing.

Set-AdfsProperties -EnableLoopDetection $false


ループの検出を完全に無効にすることはお勧めしません。これにより、ユーザーが無限ループ状態に入るのを防ぐことができます。It is not recommend to permanently disable loop detection as this prevents users from entering into infinite loop states.

次の手順Next Steps