近日,代码托管平台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操作时,不再接受以账户密码的形式完成身份验证。”
更换身份验证方式的原因
实际上早在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,可按使用次数或按设备生成。
可撤销——可以随时单独撤销令牌,不需要更新未受影响的凭据
有限性——令牌的使用范围严格控制,仅允许执行用例中需要的访问活动
随机性——令牌的复杂度远高于用户设计的简单密码,因此不受暴力破解等行为的影响。
启动最新身份验证方式的影响
工作流程受影响
命令行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和第三方集成对所有经过身份验证的操作使用个人访问令牌。
https://github.blog/2020-07-30-token-authentication-requirements-for-api-and-git-operations/