npm 使用雙因素身份驗證

2021-10-29 10:47 更新

需要 npm 5.5.1 或更高版本

為了滿足對強大數(shù)字安全性日益增長的需求,npm 在 5.5.1 版中引入了雙因素身份驗證 (2FA)。雙因素身份驗證通過使用兩種方法確認(rèn)你的身份來防止未經(jīng)授權(quán)訪問你的帳戶:

  • 你知道的信息(例如你的用戶名和密碼)
  • 你擁有的東西(例如手機或平板電腦)

例如,如果你的銀行使用2FA,你第一次登錄你的網(wǎng)上銀行系統(tǒng)時,銀行會向你的手機號碼發(fā)送一個驗證碼,然后提示你在線輸入驗證碼。這證明了手機在你的手中,并將其鏈接到你的帳戶進行身份驗證。之后,每當(dāng)銀行檢測到任何異常情況時,例如從另一臺筆記本電腦登錄,它都會向你的手機發(fā)送一個臨時代碼,你必須先輸入該代碼才能登錄。這提供了額外的安全層,因為即使有人獲得了你的登錄憑據(jù),他們也不太可能擁有你的設(shè)備。即使有人找到了你的手機,他們也不太可能破解你筆記本電腦的密碼。

兩因素身份驗證成倍增加了對攻擊的保護,我們建議你使用 npm 帳戶也可以應(yīng)用這一功能。

準(zhǔn)備

要使用你的 npm 帳戶啟用 2FA,你需要一個可以生成一次性密碼或 OTP 的應(yīng)用程序。例如,Authy或?Google Authenticator,可以生成一次性密碼(OTP)。這些產(chǎn)品使用基于時間的一次性密碼算法 (TOTP) 來創(chuàng)建臨時代碼。在你使用 npm 帳戶工作時將始終可用的移動設(shè)備或第二臺筆記本電腦上安裝該應(yīng)用程序。(注意:npm 不使用 SMS(文本到電話)作為驗證用戶的方法。)

認(rèn)證級別

有兩個級別的身份驗證,auth-only和auth-and-writes。

如果你在auth-only模式下啟用 2FA,當(dāng)你執(zhí)行以下操作時,npm 將需要一個 OTP:

  • 登錄
  • 刪除 2FA

如果你在auth-and-writes模式下啟用 2FA?,這是默認(rèn)設(shè)置,當(dāng)你執(zhí)行以下操作時,npm 將需要一個 OTP:

  • 登錄
  • 更改您的個人資料
  • 創(chuàng)建或撤銷令牌
  • 發(fā)布包
  • 更改訪問權(quán)限
  • 更改你的密碼
  • 對包進行其他敏感更改
  • 刪除 2FA

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

npm owner add <user > --otp=123456

下面列出了其他示例。

如何啟用 2FA?

要要求雙因素身份驗證,請鍵入滿足您希望應(yīng)用的安全級別的命令(auth-and-writes 是默認(rèn)設(shè)置)。

    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

取決于你提供的設(shè)置。

接下來,npm 將顯示一個二維碼:

  1. 將新帳戶添加到你的身份驗證器應(yīng)用程序。
  2. 掃描二維碼,或輸入二維碼正下方顯示的數(shù)字。

這將配置身份驗證器應(yīng)用程序以供將來使用,將身份驗證鏈接到生成身份驗證的設(shè)備。

使用你的身份驗證器應(yīng)用程序,在顯示的提示處輸入 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.

應(yīng)用雙因素身份驗證后,你可以使用該npm profile get命令確認(rèn)已設(shè)置。

示例:啟用 2fa 后設(shè)置配置文件值

安裝 2FA 后,你需要為安全相關(guān)命令輸入 OTP。例如,無論何時使用該命令,npm profile set你都需要輸入 OTP,然后才能設(shè)置或更改值,例如你的全名:

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

使用 npm profile get 確認(rèn)新設(shè)置。

讀者請注意:我們已重置屏幕截圖中使用的帳戶;QR 和代碼都不再有效。但感謝那些向我們詢問此事的機敏和善良的袋熊。

恢復(fù)代碼

如上所述,設(shè)置雙因素身份驗證后,屏幕上會出現(xiàn)一系列恢復(fù)代碼。請打印它們并按照說明保存它們。注意:某些身份驗證器應(yīng)用程序為您提供了一種存儲恢復(fù)代碼的方法。

提示:將這些代碼保存在與用于驗證的設(shè)備不同的位置。例如,如果你從平板電腦獲取 OTP,請不要將代碼保存在平板電腦的保護套中。

下面解釋恢復(fù)過程。

如何從你的個人資料中刪除兩因素身份驗證

要從你的配置文件中刪除 2FA,請輸入以下命令:

    npm profile disable-2fa

npm 將提示你輸入密碼:

    > npm password:

按照提示輸入你的npm密碼,然后npm會顯示:

   >Enter one-time password from your authenticator: 123456

npm 將確認(rèn):

   Two factor authentication disabled.

如何從命令行發(fā)送 OTP 值

如果你啟用了 2FA auth-and-writes,你將需要從命令行發(fā)送某些命令的 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

如果放錯了第二臺設(shè)備怎么辦

如果你找不到提供二次驗證的設(shè)備:

找到你在啟用 2FA 時保存的恢復(fù)代碼。如果你已經(jīng)注銷,請使用你的登錄名和 npm 密碼正常登錄。當(dāng)提示輸入 OTP 時,輸入恢復(fù)代碼。(請注意,這可能會使用相同的 npm 帳戶名創(chuàng)建第二個身份驗證器帳戶。請務(wù)必使用新創(chuàng)建的帳戶。)登錄后,npm profile disable-2fa如果出現(xiàn)提示,請鍵入并輸入您的 npm 密碼??吹酱颂崾緯r,請輸入未使用的恢復(fù)代碼:

 >Enter one-time password from your authenticator: 

npm 將確認(rèn)已禁用雙因素身份驗證。鍵入npm profile enable-2fa以重新啟用 2FA,為你的帳戶分配不同的設(shè)備,并生成新的恢復(fù)代碼。如果你放錯了恢復(fù)代碼,請聯(lián)系 npm 客戶支持。

如果在輸入 OTP 后看到錯誤怎么辦?

如果你輸入的 OTP 似乎是有效的,但看到錯誤,請確保你使用的是正確的身份驗證器帳戶。在下面的屏幕截圖中,Authy 中的當(dāng)前帳戶設(shè)置不正確,因為開發(fā)人員有多個 npm 測試帳戶。這將導(dǎo)致 OTP 失敗。此外,如前所述,當(dāng)你在禁用 2fa 后重置 2fa 時,身份驗證器可能會創(chuàng)建另一個同名帳戶。請參閱身份驗證器文檔以刪除舊帳戶。

筆記

你使用命令行界面 (CLI) 定義的設(shè)置也將適用于該網(wǎng)站。目前,你無法從 Web 界面激活 2FA。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號