我试图在基于http.sys的服务器上实现单点登录(使用IOCP),而且我在使用SEC_E_LOGON_DENIED随机失败时会遇到奇怪的问题。
当从同一台客户端计算机连接到同一台服务器计算机(大约50%的时间)时,即使只有一个只有一个http连接的客户端,我也会随机收到故障。两台机器都在同一个域中,它们都不是域控制器。
失败的调用是质询 - 响应序列中的第二个(也是最后一个),第一个始终成功。
当我在AcceptSecurityContext调用之前在IDE中有一个断点(没有其他任何改变)时,身份验证总是成功(就我测试而言)。
怀疑时间问题,我在通话前设置了睡眠(),但这并没有提高成功率。
当从同一台机器连接http服务器运行时,身份验证始终成功。
无论客户端浏览器(IE和Chrome)如何,行为都是相同的。
有什么想法吗?
答案 0 :(得分:1)
发现并解决了问题,它与base64数据的解码问题有关,一个字符('+')被错误地转换为空格'',所以问题只发生在该字符出现时。
为什么在设置调试器断点时没有发生这种情况,或者从本地连接不清楚但是......可能存在一些时序元素。