npm 经典令牌已撤销,基于会话的身份验证和 CLI 令牌管理现已可用
Source: GitHub Changelog
今日更改内容(2025 年 12 月 9 日)
npm 经典令牌被永久吊销
我们已永久吊销所有现有的 npm 经典令牌。它们不再能够进行身份验证、重新创建或恢复。
新的基于会话的身份验证
从今天起,当你使用 npm login 时,将收到一个两小时有效的会话令牌,而不是长期有效的令牌。这些会话会在两小时后自动过期,需要重新身份验证才能继续发布。与传统令牌不同,会话令牌不会出现在你的 UI 或 CLI 令牌列表中——它们在后台工作以维持已认证的会话。在这些会话期间,发布操作将强制使用 2FA,提供额外的安全层。
用于细粒度令牌的新 CLI 令牌管理工具
npm 正在推出一款专门用于管理细粒度访问令牌的命令行工具。该工具可以直接在终端中创建、列出和吊销细粒度令牌,无需访问 npm 网站进行令牌管理。新令牌管理命令的完整文档将在 npm CLI 文档 中提供。
新包默认启用 2FA
本周起,2FA 强制将成为所有新包发布的默认选项。创建新包时,2FA 将在包设置中默认启用。已有包将保留其当前的 2FA 设置。
临时恢复对旧版 API 端点的支持
我们已临时恢复对导致 11 月兼容性问题的旧版 API 端点(/user/org.couchdb.user:)的支持。该端点现在会生成与 npm login 相同的两小时会话令牌,发布时每两小时需要重新身份验证。
这是一项临时措施,旨在提供过渡期。该旧版端点的移除已在计划中,预计在未来几个月内完成。我们强烈建议现在就迁移到现代身份验证方式,以避免中断。
注意: 此端点主要影响 Yarn v1 和 v2 的用户。如果你使用这些版本,请考虑升级到现代的包管理器或支持当前 npm 安全标准的身份验证方式。
需要你做的事
如果你仍在使用 npm 经典令牌
你的 npm 经典令牌已在今天停止工作。以下是恢复访问的方法:
- 本地开发: 运行
npm login以创建新的两小时会话。你需要定期重新身份验证,但这能提供更好的安全性。 - CI/CD 工作流: 使用新 CLI 命令(
npm token create)或在 npmjs.com/settings/~/tokens 创建细粒度访问令牌。在设置这些令牌时,你可以为非交互式自动化工作流启用 Bypass 2FA,并设置适当的过期时间(写入令牌最长限制为 90 天)。为了实现最安全的部署,建议采用 OIDC trusted publishing,这样就无需为发布包生成和管理令牌。
接下来会怎样?
感谢你的耐心等待,帮助我们加强 npm 的安全性。这些更改在保护整个 JavaScript 生态系统的同时,也保持了你依赖的工作流。有关我们的安全路线图和持续改进的更多细节,请参阅我们的 community discussion。