A W*_* It 5 linux windows-authentication node.js
我想知道是否有人知道如何使用Windows身份验证而不在ASP站点上托管.这是一个内部网,可以访问LDAP,所以我想知道是否有办法强制客户端向我提供数据,好像它来自ASP站点.我只需要登录域和用户名,我可以从那里运行.在Ubuntu上使用Node.js. 有人对此有经验吗?
更新:现在有一个模块实现了Windows集成的身份验证.
在您的401响应中,您需要提供WWW-Authenticate值为的标头NTLM,以通知浏览器他们需要发送Windows凭据.
response.writeHead(401, {
'WWW-Authenticate': 'NTLM',
});
Run Code Online (Sandbox Code Playgroud)
然后,您可以实现NTLM身份验证.引用本文档中有关NTLM身份验证协议的信息:
客户端从服务器请求受保护的资源:
GET /index.html HTTP/1.1
Run Code Online (Sandbox Code Playgroud)服务器以401状态响应,指示客户端必须进行身份验证.NTLM通过WWW-Authenticate标题显示为支持的身份验证机制.通常,服务器此时会关闭连接:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: NTLM
Connection: close
Run Code Online (Sandbox Code Playgroud)
请注意,如果它是第一个提供的机制,Internet Explorer将只选择NTLM; 这与RFC 2616不一致,后者声明客户端必须选择最强支持的身份验证方案.
客户端使用Authorization包含Type 1消息参数的标头重新提交请求.Type 1消息采用Base-64编码进行传输.从现在开始,连接保持开放; 关闭连接需要重新认证后续请求.这意味着服务器和客户端必须通过HTTP 1.0样式的"Keep-Alive"头或HTTP 1.1(默认情况下使用持久连接)支持持久连接.相关的请求标题显示如下:
GET /index.html HTTP/1.1
Authorization: NTLM TlRMTVNTUAABAAAABzIAAAYABgArAAAACwALACAAAABXT1JLU1RBVElPTkRPTUFJTg==
Run Code Online (Sandbox Code Playgroud)服务器用回复401包含状态类型2消息的WWW-Authenticate标题(再次,BASE-64编码).如下所示.
HTTP/1.1 401 Unauthorized
WWW-Authenticate: NTLM TlRMTVNTUAACAAAADAAMADAAAAABAoEAASNFZ4mrze8AAAAAAAAAAGIAYgA8AAAARABPAE0AQQBJAE4AAgAMAEQATwBNAEEASQBOAAEADABTAEUAUgBWAEUAUgAEABQAZABvAG0AYQBpAG4ALgBjAG8AbQADACIAcwBlAHIAdgBlAHIALgBkAG8AbQBhAGkAbgAuAGMAbwBtAAAAAAA=
Run Code Online (Sandbox Code Playgroud)客户端通过使用Authorization包含Base-64编码的Type 3消息的头重新提交请求来响应Type 2 消息:
GET /index.html HTTP/1.1
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAGoAAAAYABgAggAAAAwADABAAAAACAAIAEwAAAAWABYAVAAAAAAAAACaAAAAAQIAAEQATwBNAEEASQBOAHUAcwBlAHIAVwBPAFIASwBTAFQAQQBUAEkATwBOAMM3zVy9RPyXgqZnr21CfG3mfCDC0+d8ViWpjBwx6BhHRmspst9GgPOZWPuMITqcxg==
Run Code Online (Sandbox Code Playgroud)最后,服务器验证客户端的Type 3消息中的响应,并允许访问资源.
HTTP/1.1 200 OK
Run Code Online (Sandbox Code Playgroud)获取用户的用户名应该很容易 - 它在Type 3消息中以纯文本形式发送.实际上验证他们提供了正确的密码完全是另一回事.实现所有这些是留给读者的练习.
| 归档时间: |
|
| 查看次数: |
4782 次 |
| 最近记录: |