首页 文章

ASP.NET HTTP Keep-Alive连接上下文

提问于
浏览
1

我正在通过手动处理NTLM身份验证来替换ASP.NET应用程序中的集成Windows身份验证 . NTLM身份验证不是问题,我有一个完整的NTLM SSPI模块的开源实现(https://github.com/FreeRDP/FreeRDP/tree/master/winpr/libwinpr/sspi/NTLM) . 我的主要问题是NTLM是面向连接的,而HTTP通常是无状态的 . 在阅读了有关NTLM身份验证之后,它被描述为需要使用HTTP Keep-Alive,其中每个请求都不会发送cookie . 只要连接保持活动状态,NTLM身份验证状态就会保留 .

我找到了在IIS中正确启用HTTP keep-alive的方法,但我发现ASP.NET中没有办法将数据与特定连接相关联 . 即使在NTLM结束时可以向客户端提供cookie,如果在接收NTLM CHALLENGE和发送NTLM AUTHENTICATE消息之间没有维持会话状态,则无法完成NTLM . 显然,当使用IIS内置的集成Windows身份验证支持时,它能够跟踪NTLM身份验证的多个步骤之间的状态 .

我正在寻找的是一种跟踪多个请求进入同一个保持活动的HTTP连接的方法 . HttpRequest中的数据似乎仅特定于当前请求,并且没有任何东西允许我识别连接 . 充其量,可能有一个服务器变量(http://msdn.microsoft.com/en-us/library/ms524602.aspx),如连接短暂端口,可用于标识相同的连接 . 这可能会起作用,但我找不到可靠地检测关联连接何时关闭的方法 .

想法,有人吗?

1 回答

  • 0

    没有这种方法可以确定当前请求是在新的TCP连接中还是重新使用连接 .

    可以通过在http报头中向已识别的当前tcp连接发送额外报头来完成 .

相关问题