阅读(4761) (9)

npm 使用双因素身份验证

2021-09-02 15:08:53 更新

需要 npm 5.5.1 或更高版本

为了满足对强大数字安全性日益增长的需求,npm 在 5.5.1 版中引入了双因素身份验证 (2FA)。双因素身份验证通过使用两种方法确认你的身份来防止未经授权访问你的帐户:

  • 你知道的信息(例如你的用户名和密码)
  • 你拥有的东西(例如手机或平板电脑)

例如,如果你的银行使用2FA,你第一次登录你的网上银行系统时,银行会向你的手机号码发送一个验证码,然后提示你在线输入验证码。这证明了手机在你的手中,并将其链接到你的帐户进行身份验证。之后,每当银行检测到任何异常情况时,例如从另一台笔记本电脑登录,它都会向你的手机发送一个临时代码,你必须先输入该代码才能登录。这提供了额外的安全层,因为即使有人获得了你的登录凭据,他们也不太可能拥有你的设备。即使有人找到了你的手机,他们也不太可能破解你笔记本电脑的密码。

两因素身份验证成倍增加了对攻击的保护,我们建议你使用 npm 帐户也可以应用这一功能。

准备

要使用你的 npm 帐户启用 2FA,你需要一个可以生成一次性密码或 OTP 的应用程序。例如,Authy或 Google Authenticator,可以生成一次性密码(OTP)。这些产品使用基于时间的一次性密码算法 (TOTP) 来创建临时代码。在你使用 npm 帐户工作时将始终可用的移动设备或第二台笔记本电脑上安装该应用程序。(注意:npm 不使用 SMS(文本到电话)作为验证用户的方法。)

认证级别

有两个级别的身份验证,auth-only和auth-and-writes。

如果你在auth-only模式下启用 2FA,当你执行以下操作时,npm 将需要一个 OTP:

  • 登录
  • 删除 2FA

如果你在auth-and-writes模式下启用 2FA ,这是默认设置,当你执行以下操作时,npm 将需要一个 OTP:

  • 登录
  • 更改您的个人资料
  • 创建或撤销令牌
  • 发布包
  • 更改访问权限
  • 更改你的密码
  • 对包进行其他敏感更改
  • 删除 2FA

要将 OTP 添加到命令,请按如下所示附加它:

npm owner add <user > --otp=123456

下面列出了其他示例。

如何启用 2FA?

要要求双因素身份验证,请键入满足您希望应用的安全级别的命令(auth-and-writes 是默认设置)。

    npm profile enable-2fa
    npm profile enable-2fa auth-and-writes 
    npm profile enable-2fa auth-only

npm 将返回此消息:

    npm notice profile Enabling two factor authentication for auth-and-writes

或此消息:

  > npm notice profile Enabling two factor authentication for auth-only

取决于你提供的设置。

接下来,npm 将显示一个二维码:

  1. 将新帐户添加到你的身份验证器应用程序。
  2. 扫描二维码,或输入二维码正下方显示的数字。

这将配置身份验证器应用程序以供将来使用,将身份验证链接到生成身份验证的设备。

使用你的身份验证器应用程序,在显示的提示处输入 OTP:

    Add an OTP code from your authenticator:

输入一次性密码后,npm 将显示以下消息:

2FA successfully enabled. 
Below are your recovery codes, please print these out. 
You will need these to recover access to your account 
if you lose your authentication device.

应用双因素身份验证后,你可以使用该npm profile get命令确认已设置。

示例:启用 2fa 后设置配置文件值

安装 2FA 后,你需要为安全相关命令输入 OTP。例如,无论何时使用该命令,npm profile set你都需要输入 OTP,然后才能设置或更改值,例如你的全名:

$npm profile set fullname Carolyn A. Wombat
Enter OTP: 567452
Set fullname to Carolyn A. Wombat

使用 npm profile get 确认新设置。

读者请注意:我们已重置屏幕截图中使用的帐户;QR 和代码都不再有效。但感谢那些向我们询问此事的机敏和善良的袋熊。

恢复代码

如上所述,设置双因素身份验证后,屏幕上会出现一系列恢复代码。请打印它们并按照说明保存它们。注意:某些身份验证器应用程序为您提供了一种存储恢复代码的方法。

提示:将这些代码保存在与用于验证的设备不同的位置。例如,如果你从平板电脑获取 OTP,请不要将代码保存在平板电脑的保护套中。

下面解释恢复过程。

如何从你的个人资料中删除两因素身份验证

要从你的配置文件中删除 2FA,请输入以下命令:

    npm profile disable-2fa

npm 将提示你输入密码:

    > npm password:

按照提示输入你的npm密码,然后npm会显示:

   >Enter one-time password from your authenticator: 123456

npm 将确认:

   Two factor authentication disabled.

如何从命令行发送 OTP 值

如果你启用了 2FA auth-and-writes,你将需要从命令行发送某些命令的 OTP。为此,请在命令末尾附加 --otp=123456(其中123456是你的身份验证器生成的代码)。这里有一些例子:

npm publish [<tarball>|<folder>][--tag <tag>] --otp=123456
npm owner add <user > --otp=123456
npm owner rm <user> --otp=123456
npm dist-tags add <pkg>@<version> [<tag>] --otp=123456
npm access edit [<package>) --otp=123456
npm unpublish [<@scope>/]<pkg>[@<version>] --otp=123456

如果放错了第二台设备怎么办

如果你找不到提供二次验证的设备:

找到你在启用 2FA 时保存的恢复代码。如果你已经注销,请使用你的登录名和 npm 密码正常登录。当提示输入 OTP 时,输入恢复代码。(请注意,这可能会使用相同的 npm 帐户名创建第二个身份验证器帐户。请务必使用新创建的帐户。)登录后,npm profile disable-2fa如果出现提示,请键入并输入您的 npm 密码。看到此提示时,请输入未使用的恢复代码:

 >Enter one-time password from your authenticator: 

npm 将确认已禁用双因素身份验证。键入npm profile enable-2fa以重新启用 2FA,为你的帐户分配不同的设备,并生成新的恢复代码。如果你放错了恢复代码,请联系 npm 客户支持。

如果在输入 OTP 后看到错误怎么办?

如果你输入的 OTP 似乎是有效的,但看到错误,请确保你使用的是正确的身份验证器帐户。在下面的屏幕截图中,Authy 中的当前帐户设置不正确,因为开发人员有多个 npm 测试帐户。这将导致 OTP 失败。此外,如前所述,当你在禁用 2fa 后重置 2fa 时,身份验证器可能会创建另一个同名帐户。请参阅身份验证器文档以删除旧帐户。

笔记

你使用命令行界面 (CLI) 定义的设置也将适用于该网站。目前,你无法从 Web 界面激活 2FA。