注意 - 我实际上已经解决了这个问题,但我没有在网上看到有关此问题的任何详细的描述,所以我会继续提出问题并自己回答。
我运行一个验证为SMTP中继用户大约 95% 的时间 ADFS 身份验证都会失败。令人费解的是,该用户偶尔会成功通过身份验证并发送所有排队的邮件。在 ADFS 事件查看器日志中,我看到两个错误 - 事件 300 和事件 413。事件 ID 300 没有提供任何有用的信息,但 413 通知我有一个奇怪的异常。
Microsoft.IdentityServer.Service.AccountPolicy.ADAccountLookupException: Exception of type 'Microsoft.IdentityServer.Service.AccountPolicy.ADAccountLookupException' was thrown.
这是怎么回事?
答案1
我检查了跨域控制器的此帐户复制情况,没有发现失败的原因。我打开了 ADFS 调试日志并尝试再次登录。这次我收到了一条非常明确的警告,该警告随后ADAccountLookupException在 ADFS 跟踪调试日志中。
事件 ID 53: AccountLockoutPolicy.IsAccountThrottled:系统无法读取用户的错误密码计数[电子邮件保护]。
检查后密码错误次数我发现我的 ADFS 场青睐 DC 上的 SMTPRelayUser 的 AD 属性确实没有设置。
这时我想起我已启用ADFS 2012 R2 外联网锁定保护不久前,它恰逢登录问题的出现。显然,Extranet Lockout Protection 功能中有一个错误,如果密码错误次数未设置。我禁用了外联网锁定保护功能,登录仍然正常。
那么为什么我的身份验证只有 5% 的时间有效呢?密码错误次数不会跨域控制器复制。每个 DC 都保留自己的计数。有时,ADFS 实际上会咨询具有密码错误次数值设置并成功验证。
这个故事的寓意是,如果您使用 ADFS 中的 Extranet 锁定保护功能,请务必小心。我自己只是暂时禁用了它。