Adfs

ADFS 無法對特定使用者進行身份驗證 - 引發 ADAccountLookupException

  • May 21, 2014

注意 - 我實際上已經解決了這個問題,但是我沒有在網上看到任何關於這個問題的詳細文章,所以我會繼續提出這個問題並自己回答。

我執行一個以SMTPRelayUser身份進行身份驗證的服務,該服務在大約 95% 的情況下開始未能通過 ADFS 身份驗證。令人費解的是,這個使用者偶爾會成功驗證並發送所有排隊的郵件。在 ADFS 事件查看器日誌中,我看到了兩個錯誤——事件 300 和事件 413。事件 ID 300 沒有提供任何有用的資訊,但 413 通知我一個奇怪的異常。

Microsoft.IdentityServer.Service.AccountPolicy.ADAccountLookupException: Exception of type 'Microsoft.IdentityServer.Service.AccountPolicy.ADAccountLookupException' was thrown.

這是怎麼回事?

我檢查了跨域控制器的此帳戶的複制,並且看不出這應該失敗的原因。我打開了 ADFS 調試日誌並嘗試再次登錄。這一次,我得到了一個非常明確的警告,在 ADFS 跟踪調試日誌中繼續出現了ADAccountLookupException 。

事件 ID 53: AccountLockoutPolicy.IsAccountThrottled:系統無法讀取使用者 SMTPRelayUser@mydomain.com 的錯誤密碼計數

在我的 ADFS 場支持的 DC 上檢查 SMTPRelayUser 的badPwdCount AD 屬性後,我看到它確實沒有設置

此時我記得我已經啟用了ADFS 2012 R2 Extranet Lockout Protection一段時間,它與登錄問題的發生同時發生。顯然,如果未設置badPwdCount,Extranet Lockout Protection 功能中存在一個錯誤,該錯誤會引發異常。我禁用了 Extranet Lockout Protection 功能,並且登錄效果很好。

那麼為什麼我的身份驗證在 5% 的時間內有效呢?badPwdCount不會跨域控制器複製。每個 DC 都有自己的計數。有時,ADFS 實際上會諮詢設置了badPwdCount值並成功進行身份驗證的 DC。

這個故事的寓意是,如果您在 ADFS 中使用 Extranet Lockout Protection 功能,請務必小心。我自己只是暫時禁用了它。

引用自:https://serverfault.com/questions/597567