node.js - 如何在 Node.js 中将 NTLM 凭据转换为 Kerberos token

标签 node.js kerberos ntlm ntlm-authentication ntlmv2

我想使用 Node.js 构建一个服务器,它充当某种代理。连接到我的服务器的客户端使用 NTLMv2 进行身份验证(无法更改此设置),但我的服务器将连接到的上游服务器需要 Kerberos token 。

所以,我的问题很简单:如何使用 Node.js 将 NTLMv2 提供的信息转换为 Kerberos token ?在 npm 上,到目前为止我已经找到了用于 NTLMv2 身份验证的模块,但我可能需要与 Windows 对话以将用户的 NTLMv2 数据转换为该用户的 token 。

任何提示,如何解决这个问题?

最佳答案

绝对不是! NTLM 和 Kerberos 的运作方式完全不同。首先,我强烈建议尽快摆脱 NTLM。

如果您可以访问 C 接口(interface),则可以轻松解决您的问题。我还假设您在 CentOS 或 FreeBSD 等类 Unix 操作系统上使用 MIT Kerberos。

NTLM 将为您提供下级登录名。您首先需要通过 LDAP 将 NetBIOS 域转换为 DNS 域(使用 libopenldap)然后您可以为您的客户端构建 Kerberos 主体或企业主体。然后在您的 KDC 中创建一个服务帐户,并在该帐户上为目标服务启用协议(protocol)转换和约束委派。现在代表该用户主体请求 TGT 并为用户请求服务票证,瞧,您可以访问您的 Kerberos 后端。 这是一本不错的读物:https://k5wiki.kerberos.org/wiki/Projects/Services4User

如果您将 HTTPd 作为反向代理运行,它可能会使用 mod_auth_gssapi 为您处理所有魔法。

在 Windows 上,安全 API 和 SSPI 有点麻烦。而主要的转换是免费的 Windows。您需要 LsaLogonUserKERB_S4U_LOGON,使用该句柄模拟,然后要求 SSPI 获取一个 cred 句柄...

关于node.js - 如何在 Node.js 中将 NTLM 凭据转换为 Kerberos token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56936336/

相关文章:

node.js - 如何真正调试node.js应用程序?

mysql - 如何使用 mysql 库在 Node.js 中创建存储过程?

javascript - NW.js - PouchDB - 无法通过 Node Webkit 中的 require() 使用 PouchDB

python - 在 Windows 上安装请求-kerberos

linux - 在连接到 Windows Server 2012 的 Linux 上使用 cURL 的 SingleSignOn

java - 使用 NTLM/Kerberos 从 Tomcat 中的 Java Web 应用程序中调用 .NET Web 服务

java - 使用 NTLM 对 Sharepoint 使用 HttpClient 身份验证机制时出现 HTTP 403 Forbidden

javascript - 为什么这仍然返回一个 promise ?

wcf - 在 WCF 中传递 DefaultCredentials 的等价物是什么?

http-headers - 从 NTLM 身份验证 header 获取用户名?