Skip to content

重新授权 Git Credential Manager OAuth 应用程序

问题描述

当您的组织启用了 GitHub SAML 单点登录(SSO)后,在使用 Git 命令操作组织仓库时可能会遇到以下错误:

bash
$ git push --delete origin v0.1.3
remote: The `<my_company>' organization has enabled or enforced SAML SSO. To access
remote: this repository, you must re-authorize the OAuth Application `Git Credential Manager`.
fatal: unable to access 'https://github.com/<my_company>/myproj.git/': The requested URL returned error: 403

这个错误表示您需要重新授权 Git Credential Manager 这个 OAuth 应用程序,以通过组织的 SAML SSO 认证。

解决方案

以下是针对不同操作系统和场景的解决方案,按推荐顺序排列。

方法一:使用 GitHub CLI 重新认证(推荐)

适用平台

Windows、macOS、Linux

安装 GitHub CLI(如果尚未安装):

bash
# macOS
brew install gh

# Windows
winget install --id GitHub.cli

# Ubuntu/Debian
sudo apt install gh

然后执行认证命令:

bash
gh auth login

按照提示完成认证流程,选择 HTTPS 协议并授权相关组织访问权限。

方法二:清除凭据并重新认证

Windows 系统

  1. 打开「控制面板」→「用户账户」→「凭据管理器」→「Windows 凭据」
  2. 在「通用凭据」中找到并删除所有以 git: 开头的 GitHub 相关凭据
  3. 在 Git Bash 中重新执行 Git 命令,系统会提示您重新认证

macOS 系统

  1. 打开「钥匙串访问」应用程序
  2. 搜索「github.com」并删除相关凭据
  3. 或者在终端中执行:
bash
$(git config --global credential.helper) github login

Linux 系统

bash
# 查看凭据存储文件
git credential-store --file ~/git.store

# 删除有问题的凭据后重试

方法三:使用 Git Credential Manager 命令

TIP

仅适用于已安装 Git Credential Manager 的 Windows 系统

bash
git credential-manager github login

方法四:使用 SSH 替代 HTTPS

如果上述方法都无效,可以考虑使用 SSH 协议替代 HTTPS:

bash
# 获取仓库的 SSH URL(格式:git@github.com:username/repo.git)
git remote set-url origin <ssh-url>

方法五:撤销并重新授权 OAuth 应用

如果特定 IDE(如 VSCode)出现此问题:

  1. 访问 GitHub 已授权的 OAuth 应用
  2. 找到相关应用(如 "GitHub for VSCode"、"Git Credential Manager")
  3. 点击「撤销」并重新在 IDE 中登录

预防措施

为了避免类似问题再次发生:

  1. 定期更新认证:定期运行 gh auth refresh 刷新认证令牌
  2. 使用 SSH 密钥:对于长期项目,考虑使用 SSH 协议而非 HTTPS
  3. 监控组织访问:定期检查 GitHub 设置中的应用授权状态

故障排除

如果仍然遇到问题:

WARNING

确保您已获得组织的适当访问权限,并且 SAML SSO 已正确配置。

  1. 确认您的 GitHub 账户已通过组织 SSO 认证
  2. 检查组织设置中是否已授权相关 OAuth 应用
  3. 尝试在不同的网络环境下操作(某些公司网络可能限制访问)

通过上述方法,您应该能够成功重新授权 Git Credential Manager 并恢复对组织仓库的正常访问。