GitHub 廢除基于密碼的 Git 身份驗證
代碼托管平臺 GitHub 于當地時間 8 月 13 日周五這天正式廢除了基于密碼的 Git 身份驗證。從 09:00 PST (PST是北美太平洋標準時間,北京時間 14 日 0 點)開始,使用 GitHub 開發者將需要切換到基于令牌的身份驗證去執行 Git 操作,基于令牌的認證包括個人接入、OAuth、SSH Key 活 GitHub App 安裝令牌。
此前在 2020 年 12 月 15日 ,GitHub 就在官方博客上宣布:” 從 2021 年 8 月 13 日開始,在 GitHub.com 上執行 Git 操作時,不再接受以賬戶密碼的形式完成身份驗證。”
1. 更換身份驗證方式的原因
實際上早在2020年7月30日,GitHub也曾表示:“ 將在所有需要身份驗證的 Git 操作中使用基于令牌的驗證機制,比如個人訪問、OAuth 或者 GitHub App 安裝令牌。如果用戶目前正在使用密碼通過 GitHub.com 對 Git 操作進行身份驗證,則將很快收到一封電子郵件,敦促用戶更新身份驗證方法或第三方客戶端。”
同時官方也給出了更換身份驗證方式的時間安排:
- 2020 年 7 月 30 日——如果用戶現在使用密碼通過 API進行身份驗證,可能會收到一封電子郵件,敦促用戶更新身份驗證方法或第三方客戶端。
- 2020 年9 月 30 日和 10 月 28 日——所有 API 操作都將暫時需要個人訪問或 OAuth 令牌,以鼓勵用戶更新其身份驗證方法。
- 2020 年11 月 13 日——所有通過 REST API進行身份驗證的操作都需要個人訪問或 OAuth 令牌(使用 GraphQL API 進行身份驗證已經需要個人訪問令牌)。
- 2021 年中期–——所有經過身份驗證的 Git 操作都需要個人訪問權限或 OAuth 令牌。
GitHub 官方認為,近年來受益于 GitHub.com 的許多安全增強功能,例如雙重身份驗證、登錄警報、設備保護、防止使用受損密碼和WebAuthn 支持。這些功能使攻擊者很難在多個網站上獲取重復使用的密碼,并使用它來訪問用戶的 GitHub 帳戶。盡管這些安全驗證方式有了一些改進,但是由于歷史原因,未啟用雙重身份驗證的客戶仍能夠使用其 GitHub 用戶名和密碼繼續對 Git 和 API 操作進行身份驗證,導致這部分用戶賬戶安全受到威脅。
而且GitHub也認為與基于密碼的身份驗證相比,令牌的使用提供了許多安全優勢:
- 唯一性——令牌特定于 GitHub,可按使用次數或按設備生成。
- 可撤銷——可以隨時單獨撤銷令牌,不需要更新未受影響的憑據
- 有限性——令牌的使用范圍嚴格控制,僅允許執行用例中需要的訪問活動
- 隨機性——令牌的復雜度遠高于用戶設計的簡單密碼,因此不受暴力破解等行為的影響。
2. 啟動最新身份驗證方式的影響
工作流程受影響
- 命令行 Git 訪問。
- 使用 Git 的桌面應用程序(GitHub Desktop 不受影響)。
- 使用用戶的密碼直接訪問 GitHub.com 上的 Git 存儲庫的任何應用程序/服務。
不受更改的影響:
- 如果用戶的帳戶啟用了雙重身份驗證,需要使用基于令牌或基于 SSH 的身份驗證。
- 如果用戶使用 GitHub Enterprise Server,對此不受影響。
- 如果用戶維護一個GitHub App,GitHub Apps 目前不支持密碼認證。
用戶需要做什么
- 對于開發人員,如果用戶現在需要使用密碼對 GitHub.com 的 Git 操作進行身份驗證,則必須在 2021 年 8 月 13 日之前通過HTTPS(推薦)或 SSH 密鑰開始使用個人訪問令牌,以避免中斷。如果用戶收到郵件提醒,提示使用的是過時的第三方集成軟件,則應將客戶端更新到最新版本。
- 對于集成商,必須在2021 年 8 月 13 日之前使用網絡或設備授權流程對集成進行身份驗證,以避免中斷。有關更多信息,請參閱授OAuth 應用程序和開發者博客上的公告。
- 可以啟用雙重身份驗證,如果用戶想確保自己帳戶不允許基于密碼的身份驗證,可以立即啟用雙重身份驗證。這將要求用戶通過 Git 和第三方集成對所有經過身份驗證的操作使用個人訪問令牌。