运行自动化测试时,“调用程序未通过服务进行身份验证”错误

时间:2014-12-23 18:12:28

标签: dynamics-crm-2011

我正在构建一个通过WCF服务与MSDCRM 2011大量接口的应用程序,使用基于AD的身份验证,但在运行时手动指定凭据。这个应用程序是TDDed,因此我们有一个相当大的测试套件,其中一些与CRM的开发实例接口,以确保代码和开发人员不仅生成语法上有效的查询,而且生成可执行和正确的查询(大多数Linq-savvy人们知道在对模拟或模拟器运行查询时不能保证;可查询提供程序总是存在限制,使得对内存集合的漂亮查询在真实系统上失败。)

通常情况下,至少每天一次,至少有一个开发人员会因错误消息而触及Web服务的多个测试对象的测试失败:

System.ServiceModel.Security.SecurityNegotiationException : The caller was not authenticated by the service.
  ----> System.ServiceModel.FaultException : The request for security token could not be satisfied because authentication failed.

所有这些相同的测试都将在之前的运行中通过,并且在尝试之间的某些不确定时间之后将再次通过。这似乎是在测试快速连续几次运行之后发生的,特别是在一台机器上。一旦发生这种情况,当使用相关用户帐户登录终端服务器上的远程桌面时,RD会返回用户帐户被锁定的更有用的错误。所有这些让我觉得这是我们的域系统中的某种入侵检测/预防措施,多个登录都在跳闸(可能看起来像DoS或者crackbot攻击)。但是,我们维护域名的IT部门不知道这是做什么的,因为他们不会故意强制执行任何此类成功登录规则集(只有失败者),因此他们坚持认为这是一个CRM问题(因此开发团队的责任)。

我意识到这对你们来说并不多,但如果它是CRM锁定帐户,我将在哪里更改设置(理想情况下用于测试的一个用户帐户),如果它不是CRM但是某些东西在Windows域/ AD系统中,我可以在哪里告诉IT团队要更改这些设置(理想情况下,仅针对一个用户)?

1 个答案:

答案 0 :(得分:0)

问题原来是Windows Credential Store中CRM服务器存在错误保存的凭据; Windows会定期尝试这些凭据,即使用户或正在运行的程序未尝试连接,这些凭据也会在锁定之前计入身份验证失败次数。从凭证存储中删除存储的凭据已解决了该问题。