AcceptSecurityContext随机SEC_E_LOGON_DENIED

时间:2012-12-05 10:02:25

标签: http authentication single-sign-on sspi

我试图在基于http.sys的服务器上实现单点登录(使用IOCP),而且我在使用SEC_E_LOGON_DENIED随机失败时会遇到奇怪的问题。

当从同一台客户端计算机连接到同一台服务器计算机(大约50%的时间)时,即使只有一个只有一个http连接的客户端,我也会随机收到故障。两台机器都在同一个域中,它们都不是域控制器。

失败的调用是质询 - 响应序列中的第二个(也是最后一个),第一个始终成功。

当我在AcceptSecurityContext调用之前在IDE中有一个断点(没有其他任何改变)时,身份验证总是成功(就我测试而言)。

怀疑时间问题,我在通话前设置了睡眠(),但这并没有提高成功率。

当从同一台机器连接http服务器运行时,身份验证始终成功。

无论客户端浏览器(IE和Chrome)如何,行为都是相同的。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

发现并解决了问题,它与base64数据的解码问题有关,一个字符('+')被错误地转换为空格'',所以问题只发生在该字符出现时。

为什么在设置调试器断点时没有发生这种情况,或者从本地连接不清楚但是......可能存在一些时序元素。