在 Windows 凭据管理器中存储/编辑 Github 访问令牌

Storing / editing Github Access Tokens in Windows Credential Manager

我目前正在开展一个项目,该项目允许我使用 2 个 Github 帐户(工作/私人)。我正在构建一个 NodeJS CLI,它将用户名作为参数并相应地更新以下值:

git config --global user.name USERNAME
git config --global user.email EMAIL

Updates Windows credential manager with the following values:
USERNAME, PERSONAL-ACCESS-TOKEN

电子邮件和个人访问令牌已安全存储,检索它们不是这里的问题。我正在使用 Windows 凭据管理器来存储我的 Git 凭据,但是当我查看我的凭据管理器时,我有 2 个单独的条目可用于 GitHub 身份验证:

  1. vscodevscode.github-authentication/github.auth --> username: github.auth
  2. git:https://github.com --> username: PERSONAL USERNAME

据我了解,Github 不久就开始使用令牌来验证其用户。并且存储这些凭据的首选方式是使用 URL-语法 (https://USERNAME:PAT@github.com/LINK_TO_REPO),但这仅适用于每个存储库。我正在寻找 1 个命令来全局更改 Git 身份验证(针对 GitHub)。

那么 VS Code(我正在使用 GitLens 插件,VS Code 向 GitHub 验证自己)是否可以使用存储在文件中的自定义用户名 + 个人访问令牌某处,而不是 github.auth 帐户凭据?或者就此而言,存储在 Windows 凭据管理器中,我可以在其中读取和编辑它们?

如果 Windows Credential Manager 将其作为密码存储/传递,GitHub 是否接受个人访问令牌?

在 URL 中存储令牌的首选方式并非如此。 Git 上游特别不鼓励这样做,因为它在存储库中以明文形式留下凭据,任何人都可以读取这些凭据,这是完全不安全的。

首选方式是使用凭据管理器,其中 Windows 有两种可能性:wincred,使用 Windows 凭据管理器,以及 manager ,这是 Git Credential Manager Core(也可能使用 Windows Credential Manager 或其他东西)。您也可以使用 store 后端,它存储在纯文本文件中,尽管这只比存储在 URL 中稍微好一点。可以通过设置 credential.helper 值在 Git 中设置首选后端。 Git FAQ 详细介绍了这一点。

Git FAQ 也提到了如何设置 multiple accounts over HTTP。它相对简单,如果您使用凭证助手,它会自动与您的凭证助手一起工作。请注意,您可能需要告诉 VS Code 将其自身排除在身份验证过程之外;由于我不使用 VS Code,所以我真的不知道该怎么做。

现在 Git 通过 HTTPS 进行身份验证的方式,无论您使用令牌还是密码,它的传递方式都是相同的:与使用基本身份验证的密码一样。即使 GitHub 不接受密码也是如此:令牌仍然在基本身份验证的密码字段中传递,任何不是令牌的内容都会被拒绝。

最后,请注意 user.name 不是用户名。 Git FAQ 特别提到它是一个个人名称(例如,Git 的维护者将其设置为“Junio C Hamano”)并且与身份验证无关。这是您创建的提交中使用的作者和提交者姓名。