ByteNoteByteNote

字节笔记本

2026年5月3日

npm 经典令牌撤销 - 会话认证和 CLI 令牌管理

API中转
¥120

GitHub 宣布完成 npm 经典令牌(classic tokens)的弃用工作,这是 npm 安全强化计划的重要里程碑,旨在加强 npm 的认证系统。

来源: GitHub Blog - Changelog 发布时间: 2025年12月9日

主要变更

1. npm 经典令牌永久撤销

所有现有的 npm 经典令牌已被永久撤销,它们无法再用于认证,也无法重新创建或恢复。

2. 新的会话式认证

从今天开始,使用 npm login 时:

  • 将获得2小时会话令牌,而非长期有效的令牌
  • 会话令牌在2小时后自动过期,需要重新认证
  • 会话令牌不会出现在 UI 或 CLI 令牌列表中(在后台工作)
  • 发布操作期间强制执行 2FA,增加额外安全层

3. 新的 CLI 令牌管理工具

npm 引入了专门用于管理细粒度访问令牌的命令行工具:

  • 可以直接从终端创建、列出和撤销细粒度令牌
  • 无需访问 npm 网站进行令牌管理
  • 提供与经典令牌相同的便捷命令行体验

4. 新包默认启用 2FA

从本周开始,2FA 强制执行将成为所有新包发布的默认选项

  • 创建新包时,包设置中将默认启用 2FA
  • 从创建之初就保护包的安全,无需手动配置
  • 现有包保持其当前的 2FA 设置

5. 旧版 API 端点临时恢复

已临时恢复对旧版 API 端点(/user/org.couchdb.user:)的支持:

  • 该端点现在生成与 npm login 相同的2小时会话令牌
  • 发布时每2小时需要重新认证
  • 这是临时措施,该端点的移除计划在未来几个月内进行

注意: 此端点主要影响 Yarn v1 和 v2 用户。建议更新到支持当前 npm 安全标准的现代包管理器或认证方法。

需要采取的行动

如果你仍在使用 npm 经典令牌

你的 npm 经典令牌今天已停止工作。以下是恢复访问的方法:

本地开发

运行 npm login 创建新的2小时会话:

bash
npm login

需要定期重新认证,但这能确保更好的安全性。

CI/CD 工作流

创建细粒度访问令牌:

方式1: 使用新的 CLI 命令

bash
npm token create

方式2: 在 npm 网站创建 访问 npmjs.com/settings/~/tokens

设置令牌时

  • 可以启用 Bypass 2FA 用于非交互式自动化工作流
  • 设置适当的过期时间(写入令牌最长90天)
  • 考虑采用 OIDC 可信发布,无需生成和管理令牌

关键要点

  • npm 经典令牌已永久撤销
  • 新的2小时会话式认证已上线
  • 新的 CLI 令牌管理工具可用
  • 新包默认启用 2FA
  • 旧版 API 端点临时恢复(即将移除)
  • Yarn v1/v2 用户需升级到现代工具

相关资源

分享: