我正在使用方法AcceptSecurityContext(https://msdn.microsoft.com/en-us/library/windows/desktop/aa374708(v=vs.85).aspx)来建立安全连接,但这似乎在Windows事件日志中触发(两个)审核失败事件。事件具有ID 4625,这似乎表示它们表示登录尝试失败,但AcceptSecurityContext调用返回状态SEC_E_OK。怎么会这样?我希望如果它真的失败,该方法将返回STATUS_LOGON_FAILURE。登录似乎有效,因为我可以继续进行通信。
有没有人知道如何避免这些消息?非常感谢帮助。
该事件似乎仅在Windows服务器上记录(我已尝试过2016年,2012年和2008年)。我在Windows 10上看不到该事件。
答案 0 :(得分:0)
Windows尝试针对Windows AD服务器对安全上下文握手中使用的证书进行身份验证时,产生了错误。关于为什么这是默认行为的理论的进一步信息将很有趣,但是在我的情况下,证书不代表任何AD实体。它仅在单台机器上的服务之间使用,以允许这些服务之间的安全通信。因此,我可以这样设置AcquireCredentialsHandle的dwFlags部分,从而在调用SCHANNEL_CRED structure时简单地关闭Windows身份验证机制:
credStruct.dwFlags = SCH_CRED_NO_SYSTEM_MAPPER;