2015-03-03 79 views
0

这是关系到how to use express-ntlm to get windows user name without authentication using NODE.js?如何使用fiddler用chrome调试ntlm协议?

我试图找到一种方法来抓住游客的Windows用户名没有通过真正的NTLM身份验证要去一个问题,我只是想提取浏览器的HTTP响应的用户名使用快递,NTLM 。

我的有关过程的理解是:

  1. 浏览器将请求发送到的node.js擅自头
  2. 明示-NTLM使得401答复
  3. 浏览器发送具有到Node.js的一个请求授权标头
  4. express-ntlm对挑战作出401回复
  5. 浏览器将发送包含用户名信息的回复

我被卡在上面的步骤4)。 我刚安装了Fiddler来记录页面加载的通信跟踪。

第一次握手:

GET http://localhost:3000/search HTTP/1.1 
Host: localhost:3000 
Connection: keep-alive 
Cache-Control: max-age=0 
Accept:  
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,  
like Gecko) Chrome/40.0.2214.115 Safari/537.36 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4 
If-None-Match: "1085683586" 

==== response ==== 
HTTP/1.1 401 Unauthorized 
X-Powered-By: Express 
WWW-Authenticate: NTLM 
Date: Wed, 04 Mar 2015 01:48:10 GMT 
Connection: keep-alive 
Proxy-Support: Session-Based-Authentication 
Content-Length: 0 

第二次握手:

GET http://localhost:3000/search HTTP/1.1 
Host: localhost:3000 
Connection: keep-alive 
Cache-Control: max-age=0 
Authorization: NTLM  
TlRMTVNTUAABAAAAB7IIogQABAA0AAAADAAMACgAAAAGAbEdAAAAD1hBUEVOR0xJQU4zMFhMTlg= 
Accept: 
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, 
like Gecko) Chrome/40.0.2214.115 Safari/537.36 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4 
If-None-Match: "1085683586" 

=== response ==== 
HTTP/1.1 401 Unauthorized 
X-Powered-By: Express 
WWW-Authenticate: NTLM 
TlRMTVNTUAACAAAAAAAAAAAoAAABggAAASNFZ4mrze8AAAAAAAAAAA== 
Date: Wed, 04 Mar 2015 01:48:10 GMT 
Connection: keep-alive 
Proxy-Support: Session-Based-Authentication 
Content-Length: 0 

有什么我需要在小提琴手跟踪关注?

我正在使用win7 + chrome。 (我也试过IE和Firefox,但没有运气)。

谢谢。

+1

你能提取文本格式的HTTP头文件吗?您对NTLM握手的描述是正确的,但很难在截图中看到实际问题。 请注意,您需要将您的站点添加到受信任的目标列表中以允许NTLM(适用于大多数浏览器)。 – RomanK 2015-03-03 06:57:51

+0

哎呀,我的道歉,屏幕截图太模糊,看不到。我会放下文字。谢谢。 – sqr 2015-03-04 01:37:14

+0

我把“localhost”和“* .domainName.com”放在“本地Intranet”列表中。它是否正确? – sqr 2015-03-04 02:06:31

回答

0

您使用Fiddler来跟踪Ntlm挑战/响应流程是一件好事。在检查员选项卡有一个验证部分与广泛的信息。当客户端发送Ntlm类型3请求时,您将在其中找到用户名。它被编码,但Fiddler会为你解码。