# @elastic\.io/ntlm-client 中文文档

规范地址：https://npmcn.com/package/%40elastic.io/ntlm-client/

版本：1\.0\.0
npm 元数据更新时间：2026-03-13T13:38:11.958Z
中文译文更新时间：2026-11-13T17:53:29.616Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40elastic.io/ntlm-client
原文对照：https://npmcn.com/package/%40elastic.io/ntlm-client/?lang=original
项目主页：https://github.com/elasticio/node-ntlm-client#readme
源码仓库：https://github.com/elasticio/node-ntlm-client

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：28.4 kB，12 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：12
- 运行依赖：2 个
- 首次发布：2020-03-06T10:06:15.023Z
- 最新版本发布：2020-03-06T10:06:15.401Z
- 近 30 天下载量：3303（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 0 个）

## 中文简介

一个节点.js NTLM客户端,支持NTLM和NTLMv2认证. 继续使用ntlm客户端和ntde-ntlm客户端.

## 安装

```sh
npm install @elastic.io/ntlm-client
```

也可以使用：`pnpm add @elastic.io/ntlm-client`、`yarn add @elastic.io/ntlm-client`、`bun add @elastic.io/ntlm-client`

## README

# ntlm 客户端

支持 NTLM 和 NTLMv2 认证的节点.js NTLM 客户端

```
npm install ntlm-client
```

## 示例使用

```javascript
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` 目标 URL
        -   `method` hTTP 动词
        -   `username`
        -   `password`
        -   `request` 这是可选的。 持有应当传递给请求实例的选项的对象
-   回返
    -   `Promise` 解决后 `request` 例如,结果和反应机构将获得通过

* * *

#### 创建 Type1Message (\[工作站,目标\])

创建类型 1 NTLM 消息以初始化 NTLM 握手

-   参数
    -   `workstation` 可选的 若为 `undefined`, (中文(简体) ), `os.hostname()` 将使用
    -   `target` 可选的 这是我们试图认证的域/主机.
-   回返
    -   `string` 完成 NTLM 字符串,该字符串应发送到服务器 `Authentication` 标题

* * *

#### 解码Type2Message( 字符串)

解码从服务器收到的第2类消息,包括 NTLM 挑战

-   参数
    -   `str` Base64 编码为 第 2 类信件, 或者完整 `WWW-Authenticate` 标题,或包含响应标题的对象(`http.IncomingMessage`(中文(简体) )
-   回返
    -   `type2Message` 包含下列关于所收到第2类消息的信息的对象: `flags`, (中文(简体) ), `encoding`, (中文(简体) ), `version`, (中文(简体) ), `challenge`, (中文(简体) ), `targetName`, (中文(简体) ), `targetInfo`。 。 。 .

* * *

#### 创建 Type3Message( 类型2Message, 用户名, 密码 \[, 工作站, 目标\])

根据从服务器收到的第2类消息创建第3类消息.

-   参数
    -   `type2Message` 已解码的 二 类信件对象
    -   `username`
    -   `password`
    -   `workstation` 可选的 如果法尔西, `os.hostname()` 将使用
    -   `target` 可选的 如果falsy,则会使用2型消息中的目标名称. 这是我们试图认证的域/主机.
-   回返
    -   `string` 完成 NTLM 字符串,该字符串应发送到服务器 `Authentication` 标题

## 常见问题

### @elastic\.io/ntlm-client 是什么？

一个节点\.js NTLM客户端,支持NTLM和NTLMv2认证\. 继续使用ntlm客户端和ntde-ntlm客户端\.

### 如何安装 @elastic\.io/ntlm-client？

在项目目录运行 npm install @elastic\.io/ntlm-client，或使用 pnpm add / yarn add / bun add。

### @elastic\.io/ntlm-client 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/elastic\.io\_\_ntlm-client 是否存在。

### @elastic\.io/ntlm-client 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @elastic\.io/ntlm-client 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js 12。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @elastic\.io/ntlm-client 可以商用吗？

@elastic\.io/ntlm-client 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @elastic\.io/ntlm-client 的下载量有多少？

根据 npm 官方下载统计，@elastic\.io/ntlm-client 在 2026/10/13 – 2026/11/11 这 30 天内被下载 3,303 次，日均约 110 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @elastic\.io/ntlm-client 还在维护吗？

最新版本 1\.0\.0 发布于 2020/03/06（6 年前）；至今共发布 1 个版本，其中过去 12 个月发布了 0 个；首次发布于 2020/03/06。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

