ntlm 客户端
支持 NTLM 和 NTLMv2 认证的节点.js NTLM 客户端
npm install ntlm-client
示例使用
const ntlmRequest = require('@elasticio/ntlm-client').request;
(async function makeExampleRequest() {
const { response } = await ntlmRequest({
username: 'MYDOMAIN\SomeUser',
password: 'P@$$word1!',
uri: 'https://api.someservice.com',
method: 'POST',
request: {
json: true, // Example of parameter passed to request.js
body: {
foo: 'bar'
},
headers: {
Date: 'Today'
}
}
});
console.log(`Received status code: ${response.statusCode} Body: ${response.body}`);
})()
API 密码
请求(选项)
尝试使用 URL 认证的便利函数 request 模块.
如果不支持NTLM,则会倒向Basic Auth.
- 参数
options用于认证进程的下列对象:uri目标 URLmethodhTTP 动词usernamepasswordrequest这是可选的。 持有应当传递给请求实例的选项的对象
- 回返
Promise解决后request例如,结果和反应机构将获得通过
创建 Type1Message ([工作站,目标])
创建类型 1 NTLM 消息以初始化 NTLM 握手
- 参数
workstation可选的 若为undefined, (中文(简体) ),os.hostname()将使用target可选的 这是我们试图认证的域/主机.
- 回返
string完成 NTLM 字符串,该字符串应发送到服务器Authentication标题
解码Type2Message( 字符串)
解码从服务器收到的第2类消息,包括 NTLM 挑战
- 参数
strBase64 编码为 第 2 类信件, 或者完整WWW-Authenticate标题,或包含响应标题的对象(http.IncomingMessage(中文(简体) )
- 回返
type2Message包含下列关于所收到第2类消息的信息的对象:flags, (中文(简体) ),encoding, (中文(简体) ),version, (中文(简体) ),challenge, (中文(简体) ),targetName, (中文(简体) ),targetInfo。 。 。 .
创建 Type3Message( 类型2Message, 用户名, 密码 [, 工作站, 目标])
根据从服务器收到的第2类消息创建第3类消息.
- 参数
type2Message已解码的 二 类信件对象usernamepasswordworkstation可选的 如果法尔西,os.hostname()将使用target可选的 如果falsy,则会使用2型消息中的目标名称. 这是我们试图认证的域/主机.
- 回返
string完成 NTLM 字符串,该字符串应发送到服务器Authentication标题