npm 使用双因素身份验证
双因素身份验证
需要npm版本5.5.1或更高版本
你是谁,你是谁?我们仔细检查一下。
为了满足日益增长的强大数字安全需求,npm推出了双因素身份验证(2FA)或(tfa)版本5.5.1。
双因素身份验证可通过以下两种方法确认您的身份,从而防止未经授权访问您的帐户:
- 你知道的东西(比如你的用户名和密码)
- 你有的东西(如手机或平板电脑)
举例说明
如果您的银行使用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将显示一个QR码:
- 在您的身份验证器应用中添加一个新帐户。
- 扫描QR码,或输入QR码正下方显示的数字。
这将配置身份验证器应用程序以供将来使用,将身份验证链接到生成身份验证的设备。
使用您的身份验证器应用程序,在显示的提示符下输入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后,从CLI设置配置文件值
安装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,为您的帐户分配不同的设备,并生成新的恢复代码。
如果输入OTP后看到错误怎么办?
如果您输入的似乎是有效的OTP,但看到错误,请确保使用正确的身份验证者帐户。在下面的屏幕快照中,由于开发人员具有多个npm测试帐户,因此Authy中的当前帐户设置不正确。
这将导致OTP失败。同样,如前所述,在禁用2fa后重置2fa时,身份验证器可能会创建另一个具有相同名称的帐户。请参阅身份验证器文档以删除旧帐户。