lak*_*tak 24 windows windows-authentication node.js node.js-client
使用node.js作为客户端时,是否可以使用Windows集成身份验证连接到服务器(例如,连接到IIS时)?
我对此的搜索仅显示结果,其中node.js用作服务器.
jos*_*736 31
更新:现在有一些模块实现了Windows集成的身份验证. node-sspi使用SSPI(Windows安全API)来处理服务器端的事情,但不进行客户端身份验证.有几个客户端实现,例如http-ntlm,但它们没有真正集成,因为它们需要用户密码 - 它们不使用SSPI来执行透明身份验证.
"Windows集成身份验证"就是所谓的NTLM身份验证.当您从IIS收到WWW-Authenticate包含标头的HTTP 401时NTLM,您现在可以实现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 2消息的挑战,其中用户的密码是MD4哈希并用于创建DES密钥来加密挑战数据.
我不确定如何访问登录用户的凭据数据,这将允许您完成此操作,但我确信它将涉及编写本机C++插件,以便您可以与必要的Windows API进行通信.或者,我想您可以只询问用户的密码.
或者,您可以通过处理NTLM混乱的软件代理您的Node请求.
对于Kerberos:
节点精神
Just on windows
No client side node
Supports NTLM too
Run Code Online (Sandbox Code Playgroud)护照谈判
Needs python on the server
it's a passportJs strategy
Run Code Online (Sandbox Code Playgroud)对于NTLM
节点精神
Just on windows
No client side node
Supports Kerberos too
Run Code Online (Sandbox Code Playgroud)ntlm
experimental project!
Run Code Online (Sandbox Code Playgroud)ntlm验证
experimental!
Run Code Online (Sandbox Code Playgroud)护照
supports SMB protocol
it's a passportJs strategy
Run Code Online (Sandbox Code Playgroud)我为Kerberos选择了护照协商,为NTLM选择了express-ntlm。
| 归档时间: |
|
| 查看次数: |
26419 次 |
| 最近记录: |