目录
1、关于双因素身份验证
2、NPM上的双因素身份验证
3、先决条件
4、从网站配置2FA
4.1 启用2FA
4.2 为写入禁用2FA
4.3 禁用2FA
5、从命令行配置2FA
5.1 从命令行启用2FA
5.2 从命令行发送一次性密码
5.3 从命令行删除2FA
6、配置帐户恢复选项
1、关于双因素身份验证
今天收到一封邮件,提示我的npm账号没有开启双因素身份验证。
首先,我们说一下双因素身份验证,也称双重验证,或者二元验证。启用2FA后,在对您拥有写访问权限的帐户或包执行某些操作之前,系统将提示您进行第二种形式的身份验证。根据您的2FA配置,系统将提示您使用安全密钥或基于时间的一次性密码(TOTP)进行身份验证。
注意:双重身份验证为您的帐户提供了最佳的安全性,可以抵御攻击者。我们强烈建议您在注册后尽快在您的帐户上启用2FA。
2、NPM上的双因素身份验证
npm上的双因素身份验证可以启用授权和写入,或仅授权。
2.1 授权和写入
默认情况下,为授权和写入启用2FA。我们将为某些授权操作以及写入操作请求第二种形式的身份验证。
动作 | CLI命令 |
---|---|
登录npm | npm login |
更改配置文件设置(包括密码) | npm profile enable-2fa auth-and-writes |
更改用户帐户的2FA模式 | npm profile enable-2fa auth-and-writes |
为您的用户帐户禁用2FA | npm profile enable-2fa auth-and-writes |
创建令牌 | npm token revoke |
撤销令牌 | npm token revoke |
发布包 | npm publish |
取消发布包 | npm unpublish |
弃用软件包 | npm deprecate |
更改包可见性 | npm access grant/revokenpm access grant/revoke |
更改用户和团队包访问权限 | npm access grant/revoke |
变更包2FA要求 | npm access grant/revoke |
2.2 仅限授权
如果仅为授权启用2FA。我们将仅为某些授权操作请求第二种形式的身份验证。
动作 | CLI命令 |
---|---|
登录npm | npm login |
更改配置文件设置(包括密码) | npm profile enable-2fa auth-and-writes |
更改用户帐户的2FA模式 | npm profile enable-2fa auth-and-writes |
为您的用户帐户禁用2FA | npm profile enable-2fa auth-and-writes |
创建令牌 | npm token revoke |
撤销令牌 | npm token revoke |
3、先决条件
- 将npm客户端更新到5.5.1或更高版本。
- 要配置安全密钥,需要支持WebAuthn功能的现代浏览器。这将允许您配置一个生物识别设备,如苹果Touch ID,Face ID 或者Windows HelloWindows Hello 等等。
- 要配置TOTP,您需要安装一个可以生成OTP的验证器应用程序,如Authy,Google Authenticator或者Microsoft Authenticator 在您的移动终端上。
4、从网站配置2FA
4.1 启用2FA
1、在npm的登录页面,输入用户名和密码,然后点击“Sign in” 按钮。
未启用双重身份验证之前,会要求输入一次性密码,如下如所示:
2、在页面右上角,单击个人资料图像,但然后单击“Account”
3、在页面找到“Two-Factor Authentication”区域,单击“Enable 2FA”
4、出现“Security key” 和 “Authentication app”,选择第一个安全密钥,继续
5、添加安全密钥,输入有一个安全密钥的名字,然后再点击“Add security key”
提示在当前设备上创建通用密钥。
MacOS上运行的Chrome 浏览器的配置示例,点击“继续”按钮,输入电脑密码,或者指纹。
6、出现恢复代码的页面上,将恢复代码复制到您的计算机或其他非第二因素设备的安全位置。我们建议使用密码管理器。
恢复代码是确保您在无法访问第二因素设备时恢复帐户的唯一方法。每个代码只能使用一次。
7、确认已保存代码后,单击“Go back to setting”。
4.2 为写入禁用2FA
1、在账户设置页面中,找到“Two-Factor Authenticction”区域,单击“Modify 2FA”
2、 找到“Additional Options”部分,取消选中“Require two-factor authentication for write actions”,然后再单击“Update Preferences”按钮。
4.3 禁用2FA
1、在账户设置页面中,找到“Two-Factor Authenticction”区域,单击“Modify 2FA”
2、滚动到页面最低部,然后单击“Disable 2FA”,就可以禁用2FA了。
5、从命令行配置2FA
5.1 从命令行启用2FA
虽然WebAuthn的security-key可以用于Web和命令行的身份验证,但它只能从Web进行配置。从命令行启用2FA时,目前唯一可用的选项是使用TOTP移动的应用程序。
1、打开命令行窗口,使用 “npm login” 命令进行登录。
2、在命令行中,键入 npm profile 命令沿着要启用的2FA模式的选项:
- 要为授权和写入启用2FA,输入一下内容:
npm profile enable-2fa auth-and-writes
- 要仅为授权启用2FA
npm profile enable-2fa auth-only
3、要将npm添加到您的身份验证器应用程序中,使用带有应用程序的设备,您可以:
- 扫描命令行上显示的二维码
- 输入QR码下方显示的数字
4、当系统提示您从验证器添加OTP代码时,请在命令行中输入验证器应用生成的一次性密码。
5.2 从命令行发送一次性密码
如果您启用了2FA auth-and-writes,则需要从命令行发送TOTP以使某些命令生效。为此,请在命令的末尾添加--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
5.3 从命令行删除2FA
1、如果您在命令行上注销,请使用npm login
命令登录。
2、在命令行中,输入一下命令:
npm profile disable-2fa
3、出现提示时,输入您的npm密码:
npm password:
4、系统提示输入一次性密码时,请从您的验证器应用程序输入密码:
输入验证器的一次性密码:123456
6、配置帐户恢复选项
当您在npm用户帐户上启用2FA时,我们强烈建议您将GitHub和/或Twitter帐户链接到您的npm用户帐户。如果您无法访问您的2FA设备和恢复代码,这些链接的帐户可用于验证您的身份并加快恢复您的npm帐户。
- 1、登录npm,点击个人资料图像,然后单击“Account”,找到“Linked Accounts & Recovery Option”选项部分
2、可以选择链接到Github或者Twitter上,方便忘记密码和密钥,更容易找回。