此前在 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 和第三方集成对所有经过身份验证的操作使用个人访问令牌。